2017-03-02 9 views
0

PersonPersonRoleAssociation 두 개체의 데이터를 결합하는 HQL 쿼리를 수행하려고합니다.HQL 다중 테이블 선택 - 외부 조인?

나는 Hibernate 4.3.10 및 Grails 3.0.10을 실행 중입니다. 이 표준 SQL 내부 왼쪽에 가입을하는 것과 같습니다

SELECT person 
    FROM Person person, 
     PersonRoleAssociation personRoleAssoc 
WHERE personRoleAssoc.person = person 

내 이해에서 :

나의 현재 쿼리는 다음과 같이 보입니다. 이것은 대부분의 경우에 적용되지만 PersonRoleAssociation이없는 Persons을 모두 쿼리해야합니다. 위 쿼리가 왼쪽 조인이므로 문제가 발생합니다.

표준 SQL에서는 왼쪽 외부 조인을 사용하지만 HQL에 해당하는 항목을 찾을 수 없습니다.

내 개체의 구조를 변경하지 않고 HQL에서 외부 조인과 동일한 작업을 수행하려면 어떻게해야합니까?

+0

Person 엔티티에 OneToMany 관계로 매핑 된 PersonRoleAssociation이 있습니까? –

+0

@MaciejKowalski 아니, Grails에서 OneToMany 관계를 갖는 것이 아주 느릴 수 있다고 들었습니다. 그래서 그것을 피하려고했습니다. –

답변

2

Person쪽에 OneToMany를 추가 할 수없고 표준 왼쪽 외부 조인을 사용할 수 없다면 올바른 조인을해야한다고 생각합니다. 다음과 같이하십시오 :

SELECT p 
    FROM PersonRoleAssociation personRoleAssoc 
    RIGHT OUTER JOIN personRoleAssoc.person p  
WHERE /* other criteria */ 
+0

대단히 감사합니다! –

+0

문제 없습니다. 다행히 도울 수있어. –