Java 休眠检查集合中所有元素是否相等

Java 休眠检查集合中所有元素是否相等,java,hibernate,Java,Hibernate,我有两个实体,即人和活动。活动具有属性状态,人员实体包含活动的集合。我想得到一份所有活动状态为“完成”的人员列表 Criteria crit = s.createCriteria(Person.class); crit.createAlias("activities", "act").add(Restrictions.eq("act.status","Done")); 但这将返回至少有一个状态为“完成”的活动的所有对象。我想检索所有活动状态设置为“完成”的人员列表。有人能帮我吗?想

我有两个实体,即人和活动。活动具有属性状态,人员实体包含活动的集合。我想得到一份所有活动状态为“完成”的人员列表

   Criteria crit = s.createCriteria(Person.class);
   crit.createAlias("activities", "act").add(Restrictions.eq("act.status","Done"));

但这将返回至少有一个状态为“完成”的活动的所有对象。我想检索所有活动状态设置为“完成”的人员列表。有人能帮我吗?

想一想,否定它。检索那些有活动且无活动处于不同于
Done
状态的活动。然后,您只需添加
maxResults()
列表。获取(0)
(请记住,可能不包含任何人)。

//打开hibernate会话
Query Query=session.createQuery(“从Persons p internal join p.activities a中选择p,其中a.status=:code”);
query.setParameter(“代码”、“完成”);
List results=query.List();
//闭门会议
对于(int i=0;i列表

以下是使用标准的方法

Criteria crit = s.createCriteria(Person.class);

DetachedCriteria sub = DetachedCriteria.forClass(Person.class);
sub.createAlias("activities","act");
sub.add(Restrictions.ne("act.status","Done"));
sub.setProjection(Projections.property("id");

crit.add(Property.forName("id").notIn(sub);
有点晚了,但我希望我能帮助那些像我一样仍在挣扎的人

Criteria crit = s.createCriteria(Person.class);

DetachedCriteria sub = DetachedCriteria.forClass(Person.class);
sub.createAlias("activities","act");
sub.add(Restrictions.ne("act.status","Done"));
sub.setProjection(Projections.property("id");

crit.add(Property.forName("id").notIn(sub);