我在为以下域类编写查询时遇到问题:
class Person {
static hasMany = [memberships: Membership]
}
class Membership {
static belongsTo = [person: Person, group: Group]
Date joinDate = new Date();
Group group;
Person person;
}
class Group {
static hasMany = [memberships: Membership]
}
基本上,我想找到属于组列表的所有人(假设组 ID 是 (1,2)
。这里的技巧是该人必须是两者的成员组。我更喜欢条件查询,但 HQL 也可以。
请注意,使用类似 group.id in (1,2)
的查询将不起作用,因为它可以是任何组,而不是两者。
最佳答案
这是我的简单 HQL 方法:
Person.executeQuery("FROM Person x WHERE x IN (SELECT m.person from Membership m WHERE m.group = :group1) AND x IN (SELECT m.person from Membership m WHERE m.group = :group2)", [ group1: Group.get(1), group2: Group.get(2) ])
干杯
关于java - Grails查询关联问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/824306/