2012-02-20 34 views
0

格姆的hasMany的選擇映射假設我有類似下面的設置:在Grails的

class User { 
    static hasMany = [items : Item]; 
} 

class Item { 
    String name; 
} 

我試圖選擇具有在hasMany映射的Item所有Users。我有一個項目的ID,並希望找到所有「擁有」該項目的用戶。

是否有一個HQL查詢我可以運行,將做到這一點或更好呢,一個內置的GORM函數來處理這個查詢?

假設這是直的SQL我會做這樣的事情:

SELECT `user_id` FROM `user_item` WHERE `item_id`=[ID] 

展望H2我可以編寫查詢

SELECT USER_ID FROM USER_ITEM WHERE ITEM_ID=1; 

我可以擴大這一SQL包括整個用戶對象:

SELECT * FROM user, user_item WHERE user_item.item_id=[item id] AND user.id = user_user.user_items_id; 

回答

2

此HQL將工作:

Item item = ... 
Item.executeQuery(
    'from User u where :item in elements(u.items)', 
    [item: item])