Java 弹簧靴&x2B;冬眠+;SqlAzure分页问题
我有一个使用hibernate作为ORM的JavaSpring启动应用程序。该数据库是Azure SQL Server 我已经在供应商适配器配置上启用了setShowSql 当我想查找对象时,我使用了TypedQuery的方法Java 弹簧靴&x2B;冬眠+;SqlAzure分页问题,java,spring,hibernate,azure,pagination,Java,Spring,Hibernate,Azure,Pagination,我有一个使用hibernate作为ORM的JavaSpring启动应用程序。该数据库是Azure SQL Server 我已经在供应商适配器配置上启用了setShowSql 当我想查找对象时,我使用了TypedQuery的方法setFirstResult和setMaxResults,然后调用getResultList方法 控制台中打印的查询不包含OFFSET和ROW FETCH子句,而且Hibernate似乎首先检索所有结果,然后对结果列表应用分页 这显然会导致性能问题 我哪里做错了 下面我报告
setFirstResult
和setMaxResults
,然后调用getResultList
方法
控制台中打印的查询不包含OFFSET和ROW FETCH子句,而且Hibernate似乎首先检索所有结果,然后对结果列表应用分页
这显然会导致性能问题
我哪里做错了
下面我报告我使用的示例代码
query.setFirstResult(pageable.getOffset());
query.setMaxResults(pageable.getPageSize());
...
query.getResultList()
只有在满足以下条件时,Hibernate才会在SQL Server方言下显式包含
OFFSET
和FETCH
子句:
ORDER BY
子句TOP
子句查询SQLServer2012Dialect
使用一个名为SQLServer2012LimitHandler
的定制LimitHandler实现,您可以看到它显式地处理这个用例,或者返回到旧的行为
如果上述两个需求都得到了满足,但由于某种原因,逻辑仍然回到了原来的行为,那么这就是一个bug。在这种情况下,您可能应该使用测试用例进行更新,以便我们能够修复它。您使用的是哪种方言?您的查询是否包含一个orderby
片段,或者结果是无序的?我用所有方言都试过了。我使用的实际方言是org.hibernate.dialogue.sqlserverdialogue。关于ordeer by fragment,是的,我已经包括了它,并在打印的查询中看到了它。今天我尝试了hibernate的最新稳定版本,但结果是一样的。谢谢!!我的问题在于Spring配置。当我将hibernate.version属性设置为5.2.12.Final时,它工作得很好!