1

我有一个带有元素B列表的A类。每个B还有一个对象C。我需要做的是找到A的实例,其中列表中至少有两个具有不同C实例的B实例。

public class A {
   long id;
   List<B> elements;
}

public class B {
    long id;
    C object;
}

public class C {
    long id;
}

我已经尝试了很多不同的东西,直接比较,创建两个别名,DetachedCriteria,或者我得到 0 行,我得到至少有一个 B 的每一行,或者我得到一个异常。我从来没有得到符合我想要的那一排。

我要疯了,有人知道我如何让它工作吗?

4

1 回答 1

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();
于 2013-02-18T09:11:45.827 回答