2012-02-20 2 views
0

Предположим, что у меня есть установки, как следующее:Выбор hasMany отображение с GORM в Grails

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

class Item { 
    String name; 
} 

Я пытаюсь выбрать все Users, которые имеют в этом hasMany отображения в Item. У меня есть идентификатор элемента, и вы хотите найти всех пользователей, которые «имеют» этот элемент.

Есть ли запрос HQL, который я могу выполнить, который будет делать это или еще лучше, встроенную функцию GORM, которая обрабатывает этот запрос?

Предположив это было прямой SQL я бы сделал что-то вроде:

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

Глядя в Н2 я могу написать запрос

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]) 
Смежные вопросы