我有一个类A,其中包含元素B的列表。每个B还有一个对象C。我需要做的是找到A的实例,其中至少有两个B实例具有不同的C实例列表。
public class A {
long id;
List<B> elements;
}
public class B {
long id;
C object;
}
public class C {
long id;
}
我已经尝试了一堆不同的东西,直接比较,创建两个别名,DetachedCriteria,要么我得到 0 行,要么我得到至少有一个 B 的每一行,要么我得到一个异常。我从来没有得到符合我想要的一行。
我要疯了,有人知道我如何让它工作吗?
最佳答案
一如既往,一旦我最终屈服并将问题作为问题发布,我很快就会找到解决方案。
Criteria crit = session.createCriteria(A.class, "a");
DetachedCriteria cCount = DetachedCriteria.forClass(A.class, "a2");
cCount.createAlias("a2.elements", "elements2");
cCount.add(Restrictions.eqProperty("a2.id", "a.id");
cCount.setProjection(Projections.countDistinct("elements2.object.id");
crit.add(Subqueries.lt(1L, areaCount);
return (List<A>) crit.list();
关于java - 通过 Hibernate Criteria 在列表中查找具有多个唯一元素的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14932445/