Hibernate标准和行数限制
我有两个名为父和子的实体, 以一对多的关系链接。 Child实体具有布尔isStudent
属性。
我如何使用Hibernate Criteria API获得至少一个具有isStudent = true
Child的所有Parent实体?
我试图使用Projection对象来计算所有至少有一个属性正确设置的Child的父对象,然后返回那些行计数大于零的父对象,如下面的一段代码(这不起作用,虽然):
Criteria criteria = getCurrentSession().createCriteria(Parent.class);
criteria.setProjection(Projections.alias(Projections.rowCount(), "count"))
.add(Restrictions.gt("count", 0)).createCriteria("children")
.add(Restrictions.eq("isStudent", true));
谢谢你的帮助
这对我有效:
DetachedCriteria crit = DetachedCriteria.forClass( Parent.class, "theparent" );
DetachedCriteria countSubquery = DetachedCriteria.forClass( Child.class , "child" );
countSubquery
.add( Property.forName("theparent.id").eqProperty( "parent.id" ) )
.setProjection(Projections.count("id"));
crit.add(Subqueries.lt(Long.valueOf(0), countSubquery));
[编辑:修复了@brabenetz指出的错误]
如果父母与子女之间存在双向关系,即子女拥有“父母”字段,则返回拥有> 0个子女的父母。
RobAu的答案几乎是我们需要的。 但是它有一个小错误:而不是子查询。 gt (..)你需要子查询。 LT(...)
crit.add(Subqueries.lt(Long.valueOf(0), countSubquery));
链接地址: http://www.djcxy.com/p/36975.html