我正在尝试使用基于行的限制来实现分页(例如: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(使用前将#替换为@)