我有一个带有元素列表B的A类。每个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,或者我得到一个异常。我从来没有得到符合我想要的那一行。
我在这里生气,任何人都知道如何让它发挥作用?
答案 0 :(得分:0)
与往常一样,一旦我最终放弃并将问题作为一个问题发布,我会在稍后找到解决方案。
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();