sqlserver 分页中加入order by排序时,并加入web动态数据权限ORDER BY 子句异常

Blade 未结 1 955
247427748
247427748 剑圣 2021-12-27 00:33

一、该问题的重现步骤是什么?

1. 首先在web中参照selectNoticePage写一个自定义分页查询
image.png

2. 查询中添加 order by create_time desc

image.png


二、你期待的结果是什么?实际看到的又是什么?

1、期待返回正常分页数据,实际看到的是

### SQL: SELECT COUNT(*) FROM (SELECT * FROM nems_assets_borrow_repair WHERE tenant_id = '000000' ORDER BY create_time DESC) scope WHERE scope.create_dept IN (1453322778688311299)

### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。


2、如果在语句中添加 top 100 percent,则生成WITH selectTemp sql语句报错image.png

image.png


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

当前使用 bladex-boot 2.8.2 企业版   windows10操作系统


四、请提供详细的错误堆栈信息,这很重要。

org.springframework.jdbc.UncategorizedSQLException: 

### Error querying database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

### The error may exist in file [E:\projects\java-project\git-project\NEMS\bladex-boot\target\classes\org\springblade\modules\nems\business\mapper\NemsAssetsBorrowRepairMapper.xml]

### The error may involve defaultParameterMap

### The error occurred while setting parameters

### SQL: SELECT COUNT(*) FROM (SELECT * FROM nems_assets_borrow_repair WHERE tenant_id = '000000' ORDER BY create_time DESC) scope WHERE scope.create_dept IN (1453322778688311299)

### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

; uncategorized SQLException; SQL state [S0001]; error code [1033]; 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)

at com.sun.proxy.$Proxy143.selectList(Unknown Source)

at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)

at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:173)

at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:78)

at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)

at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)

at com.sun.proxy.$Proxy235.selectBorrowRepairPage(Unknown Source)

at org.springblade.modules.nems.business.service.impl.NemsAssetsBorrowRepairServiceImpl.selectBorrowRepairPage(NemsAssetsBorrowRepairServiceImpl.java:210)


五、若有更多详细信息,请在下面提供。

1条回答
  • 2021-12-27 10:34

    这个问题已经记录了,后面会进行排查

    作者追问:2022-01-10 15:28

    大佬,这个问题大概什么时候能处理好,有计划么,上线等用

    0 讨论(0)
提交回复