2012-03-15 2 views
1

Hibernate를 사용하여 변경할 수없는 레거시 데이터 모델에 매핑합니다. 특정 쿼리에 대해 하나 이상의 속성을 포함하는 조인 조건을 사용하는 일부 HQL을 생성하려고합니다.Hibernate 조건부 HQL join

클래스 Consumer과 그 두 가지 속성을 고려 - 유형 Gadget 모두 : 난 달성하기 위해 노력하고있는 무슨 설명이 무섭게 인위적인 예를

consumer 테이블에 두 개의 외래 키를 가지고
@Table(name = "consumer") 
class Consumer { 
    @Column(name = "mp3_player") 
    Gadget mp3Player; 
    @Column(name = "mobile_phone") 
    Gadget mobilePhone; 
    ... 

공지 사항 gadget 테이블 - 이상적이지는 않지만 내가해야 할 일이 있습니다. Consumer '밥'이 MP3 플레이어 또는 전화로 사용하는 'iphone'이라는 Gadgets의 목록을 얻고 싶습니다. 포스트 그레스와 나는 쓸 수있다 : 나는 HQL이 쿼리를 표현하기 위해 시도했지만이 조인 절은 하나 개의 조건을 포함 할 것을 요구하는 표시

select gadget.* 
from consumer join gadget on (
    consumer.mp3_player = gadget.id or consumer.mobile_phone = gadget.id 
) 
where consumer.name = 'bob' and gadget.name = 'iphone'; 

. 그렇다면 HQL에서 비슷한 쿼리를 어떻게 표현할 수 있습니까?

답변

1
select consumer from Consumer consumer 
left join consumer.mp3Player mp3Player 
left join consumer.mobilePhone mobilePhone 
where consumer.name = 'Bob' 
and (mp3Player.name = 'iphone' or mobilePhone.name = 'iphone') 
+0

답장을 보내 주셔서 감사합니다. 질문에서 일부 세부 사항을 빠뜨린 것이므로 지금 업데이트 할 것입니다. – teabot

+0

좋아, 그래서 내가 잘못된 질문을하고있는 것으로 판명되었다 - 사과. 질문이 업데이트되었습니다. – teabot