使用Criteria API在Hibernate中对子对象进行过滤/限制的分页

时间:2018-08-23 04:51:23

标签: hibernate pagination hibernate-criteria

我无法获得预期的分页结果。我的同一个父对象的每个子条目都获得了多个条目作为分页输出。但是,要求每个父对象都有一个条目,并附加所有子对象。 我尝试使用criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)。 但是,它只返回一个父项,并且仅附加一个子项。

提前谢谢! :)

对象映射:

  

产品--OneToOne--所有者

     

所有者--OneToMany--用户(元素集合)

     

所有者--OneToMany--组(ElementCollection)

代码段:

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Product.class);
criteria.createCriteria("owner", "o").createAlias("o.users", "u", JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("o.groups", "g", JoinType.LEFT_OUTER_JOIN);
Criterion userCriterion = Restrictions.eq("u.elements", <USER_NAME>);
Criterion groupCriterion = Restrictions.in("g.elements", <GROUP_LIST>);
criteria.add(Restrictions.or(userCriterion, groupCriterion));
criteria.setFirstResult(<page> * <numberPerPage>);
criteria.setMaxResults(<numberPerPage>);
return (List<Product>) criteria.list();

0 个答案:

没有答案