项目中使用最新的druid-1.1.13 目前已知数据源有SqlServer和SyBase
sqlserver问题: SQL语句:SELECT t.name USER_NAME, t.xxx FROM t_sd_users t ORDER BY t.name ASC 异常信息:java.sql.SQLException: The function 'ROW_NUMBER' must have an OVER clause with ORDER BY.
问题定位: PageUtils 253行,select.getOrderBy() 为空,不过 SQLSelect.SQLSelectQuery 中是有orderBy的,但没有赋值给SQLSelect.SQLOrderBy, 导致上述异常
sybase问题与sqlserver类似,不再重复~ 请尽快解决
原提问者GitHub用户yidahuan
要解决此问题,有以下几种方法:
使用数据库自己的分页函数,如Oracle中的ROW_NUMBER() OVER()。
修改PagerUtils,支持Oracle这种特殊分页写法。
不使用ORMM工具,直接编写数据库特有的分页SQL。
使用不同的ORMM工具,提供更好的多数据库支持。
总的来说,使用ORM工具处理分页时需要注意:
不同数据库分页方式不尽相同
ORMM提供的通用分页方案无法很好支持所有数据库
需要针对部分数据库提供特殊处理
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。