如何通过连接和基于行的限制(分页)在休眠中获得不同的结果?

2023-11-30

我正在尝试使用基于行的限制来实现分页(例如:setFirstResult(5) and setMaxResults(10))在具有与其他表的联接的 Hibernate Criteria 查询上。

可以理解的是,数据被随机切断;并解释了原因here.

作为解决方案,该页面建议使用“第二个 sql 选择”而不是联接。

如何转换现有的条件查询(其中使用连接createAlias())使用嵌套选择代替?


您可以通过请求不同 id 的列表而不是不同水合对象的列表来实现所需的结果。

只需将其添加到您的标准中即可:

criteria.setProjection(Projections.distinct(Projections.property("id")));

现在,您将根据基于行的限制获得正确数量的结果。这样做的原因是投影将执行清晰度检查作为...的一部分sql 查询,而不是 ResultTransformer 所做的,即过滤结果的明确性aftersql查询已经执行。

值得注意的是,您现在将获得一个 id 列表,而不是获取对象列表,稍后您可以使用它来从休眠中水合对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过连接和基于行的限制(分页)在休眠中获得不同的结果? 的相关文章

随机推荐