Mar*_*ark 6 java hibernate criteria subquery
我有两个名为Parent和Child的实体,以一对多关系链接.Child实体具有布尔isStudent属性.
我如何使用Hibernate Criteria API获得至少有一个Child的所有Parent实体isStudent = true?
我试图使用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));
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
Rob*_*bAu 11
这对我有用:
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));
Run Code Online (Sandbox Code Playgroud)
[编辑:修复了@brabenetz指出的错误]
父母和孩子之间存在双向关系,即孩子有一个字段"父母"它返回有> 0个孩子的父母.
| 归档时间: |
|
| 查看次数: |
10113 次 |
| 最近记录: |