2009-07-22 102 views
10

我有一個看起來像這樣的Hibernate領域對象:HQL和一個一對多查詢

class Player { 
     List<Item> inventory; 
    } 

    class Item { 
     List<Enchantment> enchantments; 
    } 

    class Enchantment { 
     boolean isSuperiorEnchantment; 
    } 

我需要構建一個HQL查詢,返回給我的是至少有一個項目的所有球員名單在它上面有一個設定了isSuperiorEnchantment標誌的附魔。我不能在我的生活中找出一種方法來在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」,但除此之外,這正是我所需要的! – 2009-07-22 21:04:02