Grails很多人使用第三个“加入”类

时间:2012-11-28 22:25:37

标签: grails many-to-many gorm

我读到m:m关系通常意味着还有一个尚未被要求的第三类。我在UserProject上有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个对象的列表?

1 个答案:

答案 0 :(得分:2)

有几种方法 - 这是一对夫妇:

def user = User.get(userId)
ProjectMembership.findAllByUser(user).collect { it.project }

或避免查询用户:

ProjectMembership.withCriteria {
    user {
        eq('id', userId)
    }
}.collect { it.project }

要小心那些将返回大型结果集的查询 - 你最终会得到一个巨大的内存项目对象列表。