在hibernate子查询中进行分页

时间:2017-04-13 15:49:53

标签: sql hibernate subquery paging detachedcriteria

我有一个非常复杂的查询,它应用不同的过滤层,需要排序/分页。

在伪sql中我想要以下内容:

<div class="container">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

我使用SELECT ... FROM a WHERE a.id in (SELECT a.id FROM a WHERE [...] limit 10,10) Criteria,如下所示:

DetachedCriteria

现在进行分页,我无法将其添加到Criteria criteria = session.createCriteria(xx.class, "xx"); DetachedCriteria idFilterSubQuery = DetachedCriteria.forClass(xx.class, "xx"); //ADD ALL FILTERS TO idFilterSubQuery //ADD ALL OUTER_JOINS TO criteria and idFilterSubQuery criteria.add(Subqueries.propertyIn("id", idFilterSubQuery)); ,因为外连接搞砸了......所以我需要将它添加到criteria ...但是,DetachedCriteria没有idFilterSubQuerysetFirstResult() ...但你不能将普通setMaxResult()添加为SubQuery(我至少找不到方法)...

我想要一个解决方案,不首先获取所有id,然后是完整的对象(减少到DB的往返)

任何想法如何实现这一目标?因此要么使用Criteria作为SubQuery,要么将分页添加到DetachedCriteria ...

我正在使用Hibernate 4.2.21

0 个答案:

没有答案