2009-07-22 3 views
10

I는 다음과 같습니다 최대 절전 모드 도메인 개체가 이 마법에는 isSuperiorEnchantment 플래그가 설정되어 있습니다. 나는 HQL에서 이것을 표현할 수있는 방법을 찾지 못했습니다.HQL과 일대 쿼리는

아이디어가 있으십니까? 위의 모든에 대한 적절한 매핑을 가정

답변

17

, 당신이 찾고있는 쿼리는 다음과 같습니다

select p 
from Player as p 
    left join p.inventory as i 
    left join i.enchantments as e 
where e.isSuperiorEnchantment = 1 
+0

덕분에,이 큰했다. 나는 앞에 "select p"를 추가해야한다는 것을 기억해야했지만, 그렇지 않으면 정확히 내가 필요로하는 것이 었습니다! –

+0

저는 HQL을 배우고 있습니다 만 정규 SQL에서는 이것이 작동하지 않을 것입니다 - 왼쪽 조인은 Inventory와 Enchantments에 일치하는 레코드가 없더라도 Player 결과를 얻을 수 있음을 의미합니다. (나는 이것에 대한 설명을 위해 계속 파고들 것이다 ... 나는 "left join"이 HQL에서 다른 것을 의미하거나,이 쿼리가별로 쓸모가 없다는 의혹을 가지고있다). –

+1

@RobWhelan 위 쿼리는 'isSuperiorEnchantment'가 Enchantments가 없기 때문에 만족스럽지 않은'e.isSuperiorEnchantment = 1' 조건으로 정규 SQL에서 정상적으로 작동합니다 (물론 문법을 적절히 수정하면됩니다). 없는. – ChssPly76