Выбор отображения hasMany с GORM в Grails - PullRequest
0 голосов
/ 20 февраля 2012

Предположим, у меня есть настройка, подобная следующей:

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

class Item {
    String name;
}

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

Есть ли запрос 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;

1 Ответ

2 голосов
/ 20 февраля 2012

Этот HQL будет работать:

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