当前位置: 首页 > 知识库问答 >
问题:

Spring boot Hibernate SqlAzure分页问题

彭雨华
2023-03-14

我有一个使用Hibernate作为ORM的javaSpring启动应用程序。数据库是一个AzureSQL服务器。

我已经在供应商适配器配置上启用了setShowSql。

当我想查找对象时,我使用了TypeQuery的方法setFirstResultsetMax结果并调用getResultList方法。

控制台中打印的查询不包含OFFSET和ROW FETCH子句,Hibernate似乎首先检索所有结果,然后对结果列表应用分页。

这显然会导致性能问题。

我哪里做错了?

下面我报告了我使用的示例代码。

query.setFirstResult(pageable.getOffset());
query.setMaxResults(pageable.getPageSize());
...
query.getResultList()

共有1个答案

澹台硕
2023-03-14

Hibernate唯一一次在SQLhtml" target="_blank">服务器方言下显式包含OFFSETFETCH子句是在满足以下条件时:

  1. 您必须使用组织。冬眠地方话SQLServer2012Dialect或任何未来的2012版本
  2. 您的查询必须包含ORDER BY子句
  3. 您的查询没有执行TOP子句查询

SQLServer2012Dialect使用了一个定制的LimitHandler实现,称为SQLServer2012LimitHandler,您可以在这里看到它显式地处理这个用例,或者返回到旧的行为。

如果上述两个需求都得到了满足,但出于某种原因,逻辑仍然回到旧的行为,那么这就是一个bug。在这种情况下,您可能应该使用测试用例更新HHH-12152,以便我们可以修复它。

 类似资料:
  • 我需要你的帮助我是一个begineer在Spring启动,所以我有一个问题在Spring启动分页 存储库:

  • 本文向大家介绍Bootstrap table分页问题汇总,包括了Bootstrap table分页问题汇总的使用技巧和注意事项,需要的朋友参考一下 首先非常感谢作者针对bootstrap table分页问题进行详细的整理,并分享给了大家,希望通过这篇文章可以帮助大家解决Bootstrap table分页的各种问题,谢谢大家的阅读。 问题1 :服务器端取不到form值,querystring没有问题

  • 本文向大家介绍asp.net中的GridView分页问题,包括了asp.net中的GridView分页问题的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net中的GridView分页问题。分享给大家供大家参考。具体分析如下: 在ASP.NET中,经常会使用到GridView的分页,一般情况下,若使用Visual Studio自带的数据源控件,不会出现什么问题。 但是如果自己用代码

  • 我使用分页与codeigniter,但每次我得到只有一个结果添加时,我改变页面。 让我们明确一点,在中,我有15个不同的结果,当我进入时,我会得到相同的结果,最后会有额外的新结果,当我进入时,我会得到与相同的结果,但最后会有额外的一个新结果。。。 我的代码(控制器): 我的看法是:

  • 本文向大家介绍ASP.NET MVC分页问题解决,包括了ASP.NET MVC分页问题解决的使用技巧和注意事项,需要的朋友参考一下 在使用Ajax.Pager进行分页的时候需要注意一下几个方面:   1、一定要引入jquery.unobtrusive-ajax.min.js这个js;   2、一定要在页面中使用注册分页器,注册方法:@{Html.RegisterMvcPagerScriptReso

  • 这是我的Liferay搜索容器代码: 问题是,当我更改分页或更改增量时,它会给我整个记录,而不是筛选记录。