我读到m:m关系通常意味着还有一个尚未被要求的第三类。我在User
和Project
上有m:m,我创建了第三个域类ProjectMembership
这三个域如下(为了说明目的而最小化):
用户
class User {
String name
static hasMany = [projectMemberships : ProjectMembership]
}
项目成员
class ProjectMembership {
static constraints = {
}
static belongsTo = [user:User, project:Project]
}
项目:
class Project {
String name
static hasMany = [projectMemberships : ProjectMembership]
static constraints = {
}
}
如果我有用户的ID,我如何获得他们被分配到的Project
个对象的列表?
答案 0 :(得分:2)
有几种方法 - 这是一对夫妇:
def user = User.get(userId)
ProjectMembership.findAllByUser(user).collect { it.project }
或避免查询用户:
ProjectMembership.withCriteria {
user {
eq('id', userId)
}
}.collect { it.project }
要小心那些将返回大型结果集的查询 - 你最终会得到一个巨大的内存项目对象列表。