Hibernate 在Hibrate条件中使用setFetchMode时,如何对oneToMany表设置限制

Hibernate 在Hibrate条件中使用setFetchMode时,如何对oneToMany表设置限制,hibernate,criteria,Hibernate,Criteria,我正在努力创建一个Hibernate条件查询,该查询使用setFetchMode(…SELECT)并对返回的子记录进行限制。如果我按照建议使用creteAlias,它将生成一个内部连接,从而使精确分页几乎不可能 代码如下所示:- Criteria criteria = this.getSession().createCriteria(Mother.class); criteria.addOrder(Order.asc("title")) // .createAlias("children", "

我正在努力创建一个Hibernate条件查询,该查询使用setFetchMode(…SELECT)并对返回的子记录进行限制。如果我按照建议使用creteAlias,它将生成一个内部连接,从而使精确分页几乎不可能

代码如下所示:-

Criteria criteria = this.getSession().createCriteria(Mother.class);
criteria.addOrder(Order.asc("title"))
// .createAlias("children", "childrenAlias") had to remove
.add(Restrictions.eq("childAge", "5")) // how do I reference childAge?
.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStart())
.setFetchMode("children", FetchMode.SELECT);

天知道我发这个的时候在哪里。我想我会把答案贴出来整理一下

我缺少的代码如下所示:-

Criterion child = Restrictions.eq("childAlias.childName", "Albert");
criteria.createAlias("children", "childAlias", CriteriaSpecification.INNER_JOIN);
criteria.add(child);

由于不推荐使用
CriteriaSpecification.internal\u JOIN
,因此您应该使用