在Grails中选择hasMany与GORM的映射

时间:2012-02-20 18:27:53

标签: grails gorm

假设我有如下设置:

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

class Item {
    String name;
}

我尝试选择Users映射中Item的所有hasMany。我有一个项目的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;

1 个答案:

答案 0 :(得分:2)

这个HQL会起作用:

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