gpt4 book ai didi

java - Hibernate Criteria 和行数限制

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:54 25 4
gpt4 key购买 nike

我有两个名为ParentChild 的实体,它们以一对多 关系链接。 Child 实体有一个 boolean 值 isStudent 属性。

我如何使用 Hibernate Criteria API 获取所有至少有一个具有 isStudent = true 子项的父实体?

我试图使用一个 Projection 对象来计算所有至少有一个正确设置了属性的子项的父项,然后返回那些行数大于零的项,如以下代码(它不‘工作,虽然):

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 指出的错误]

如果父子之间存在双向关系,即子项有一个字段“parent”它返回有 >0 个 child 的 parent 。

关于java - Hibernate Criteria 和行数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com