grails - 使用 'join'第三类使许多人陷入困境

标签 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对象的列表?

最佳答案

有几种方法-以下是几种方法:

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

或避免查询用户:
ProjectMembership.withCriteria {
    user {
        eq('id', userId)
    }
}.collect { it.project }

警惕那些会返回较大结果集的查询-您最终将获得庞大的项目对象内存列表。

关于grails - 使用 'join'第三类使许多人陷入困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13615503/

相关文章:

hibernate - 在未映射的表上执行更新

servlets - 在Grails 3应用程序中注册Servlet bean

c# - 如何通过 Fluent API Entity Framework 定义多对多关系?

mysql - 根据用户的技能以及 Laravel 查询生成器中的匹配技能来选择用户

grails - 保留域对象字段未保存,但仍使用Grails ORM从数据库中读取

grails - 在Grails中进行测试时,如何从域类中调用方法?

grails - Grails:对于gsp View 布局,sitemesh的其他替代方法是什么?

grails - 如何在 Controller 中模拟一个类?

java - Hibernate:@ManyToMany 关系中对象集的传递持久性

hibernate - gorm save方法导致选择查询触发