2011-08-01 3 views
1

하위 쿼리에 가입기준 쿼리는 내가 두 개의 테이블 TableA의 및 TableB의이

SELECT tabB.* FROM tableB tabB 
LEFT OUTER JOIN tableA tabA ON tabA.id = tabB.a_ref; 

을하지만 메타 데이터를 변경할 수 없습니다 (각각의 테이블에 대해 Hibernate 매핑 파일 (.hbm) 수정).

최대 절전 모드에서 조건 쿼리를 만드는 방법은 무엇입니까?

미리 감사드립니다.

답변

1

HQL 또는 Criteria 쿼리는 엔티티와 엔티티 간의 관계를 기반으로하며 엔티티를 표시하지 않았으므로 추측 할 수만 있습니다. TABLEATableATABLEB에 매핑 된 경우 TableB의와 TableA의 사이에 많은-to-one 연관으로, TableB에 매핑, 다음 쿼리는 분명하다 :

select b from TableB b left join b.tableA 

그러나 왼쪽 여기 완전히 쓸모 조인 있습니다, 쿼리에 제한을 추가하지 않기 때문에 쿼리는 TABLEA에서 아무 것도 선택하지 않습니다. 초기 SQL 쿼리는 select tabB.* from TABLEB tabB으로 작성되어야합니다. 따라서 기준 쿼리는 단지

Criteria c = session.createCriteria(TableB.class) 
+0

입니다. hbm 파일의 TableA와 TableB는 연결되어 있지 않습니다. – Incredible

+0

그러면 네이티브 SQL 쿼리를 사용하거나 매핑을 수정하지 않고 조인을 수행 할 수 없습니다. –

+0

다음과 같은 쿼리를 만들 수 있습니까? - tabB. * 선택 TABLEB tabB에서 왼쪽 외부 조인 (TABLEA tabA_에서 tabA_.ID 선택) refer.ID = tabB.a_ref; – Incredible

관련 문제