2013-02-18 1 views
1

나는 요소 목록이있는 클래스 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가 어디 모든 행을 얻을, 또는 나는를 얻을 수 예외. 나는 한 줄을 결코 얻지 못한다. 그것은 내가 원하는 것과 일치한다.

나는 여기서 화를 낼 것입니다. 아무도 어떻게 작동하게 할 수 있습니까?

답변

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();