2013-02-18 4 views
1

두 클래스가 있습니다 : AB이 있습니다. 최대 절전 모드 정렬은 null 값을 무시합니다.


public Class B { 
    String code; 
    // Setter and Getter 
} 

public Class A { 
    public B b; 
    // Setter and Getter 
} 

나는 B.code으로 분류 데이터베이스에서로드 A의 목록을 갖고 싶어. 그러나 문제는 A의 인스턴스가 b에 대해 null 값을 가지며 무시되고로드되지 않는 경우입니다.

여기에서해야 할 일은 무엇입니까? 짧은 힌트로 충분할 것입니다. 기본적 createAlias(String associationPath, String alias)으로

DetachedCriteria cr = DetachedCriteria.forClass(A.class, "a"); 
cr.createAlias("a.b", "b"); 
cr.addOrder(Order.asc("b.code")); 
// something like cr.list(); 
+0

갱신 된

여기

내 코드입니다 해결책은'B b = new B()'와'code = ""' – titus

+0

ORDER BY NULL LAST ?? –

+0

기준과 최대 절전 모드를 사용 중입니다. 거기에'addOrder'에 의해 그것을 할 수있는 방법이 있습니까? –

답변

1

은 내부 조인 생성하지만, 여기 당신이 그래서 대신 다음을 사용 조인 LEFT_OUTER이 필요합니다 :

cr.createAlias("a.b", "b", CriteriaSpecification.LEFT_JOIN); 
+0

나는 당신이 옳다고 생각합니다. 고맙습니다. –

+0

고맙습니다. 옵션 one-to-one을 사용하려고 시도하고 있었고 LEFT 조인을 INNER 조인으로 변환해야하는 이유와 아이가없는 행에 대한 결과를 얻지 못하는 이유를 알 수 없었습니다. 문서에서 : '[createAlias ​​(String String) is] ... joinType에 대해 CriteriaSpecification.INNER_JOIN을 사용하여 createAlias ​​(String, String, int)와 기능적으로 동일합니다.' 여기를 참조하십시오 : [link] (http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Criteria.html#createAlias%28java.lang.String,%20java.lang.String%29) – joshbodily