2014-10-21 2 views
0

우선, 나는 Hibernate를 처음 사용한다.Hibernate Criteria API & Subset

의 우리는 다음과 같은 데이터 구조를 가지고 있다고 가정 해 봅시다 :

엔티티 A는 0 .. * 관련 학사 학위를 가지고있다. 이 Bs 중 하나에는 "isDefault"속성이 true로 설정되어있을 수 있습니다. 모든 A에 대해이 속성을 true로 설정하여 max에 하나의 B 만 존재합니다.

나는 모두를 얻고 싶다 기본 Bs가있는 경우 (있는 경우), 그렇지 않은 경우 B는 null로 간주된다. 여기에 지금까지 가지고 무엇 : 물론

Criteria c = session.createCriteria(A.class); 

c.createCriteria("bs").add(Restrictions.eqOrIsNull("isDefault", true)); 

, 이것은 내가 어떤 도움을 주셔서 감사합니다 것 A.

에 부착 된 모든 학사 기본 B를 가진 모든 발생합니다!

답변

0

하지 :

Criteria c = session.createCriteria(A.class); 
Disjunction disjunction = Restrictions.disjunction(); 
c.add(disjunction); 
disjunction.add(Restrictions.isNull("bs")); 
c.createAliase("bs", "b"); 
disjunction.add(Restrictions.eq("b.isDefault", true)); 

이 링크를 따라하세요 정확하게.

사실 모든 Bs의 하위 집합이 null인지 여부에 따라 달라지지 않습니다. 나는 모든 것을 얻을 필요가있다. 이러한 A 중 하나에 Bs가 부착 된 경우 A에만 B가 부착되거나 표시되어야합니다 (기본값 : A).