【问题标题】:Find Object in Many-to-Many Szenario - Grails在多对多 Szenario 中查找对象 - Grails
【发布时间】:2010-05-01 19:49:58
【问题描述】:

我遇到了这种情况: - 具有 hasMany Roles 和 belongsTo Roles 的类用户 - 具有 hasMans 用户的类角色

我怎样才能获得属于用户的角色,给定对象用户, 如何在多对多 szanario 中获取对象?

findByX 不起作用,它只影响一个表,但我需要一个“查找”或其他东西来整体/在许多表上查找对象。

谁能帮助我?并原谅我的英语不好^^

【问题讨论】:

    标签: grails many-to-many


    【解决方案1】:

    如果你有一个如下所示的 User 类:

    class User {
       String username
       static hasMany = [roles: Role]
       static belongsTo = Role
    }
    

    还有一个如下所示的角色类:

    class Role {
       String name
       static hasMany = [users: User]
    }
    

    那么你的 Role 类有一个用户集合 - hasMany 定义了它。用户及其角色也是如此。

    所以如果你有一个用户,用户的角色就是“user.roles”:

    def user = User.findByUsername('foo')
    user.roles.each { role ->
       println "User $user.username has role $role.name"
    }
    

    你可以为角色做同样的事情:

    def role = Role.findByName('ROLE_ADMIN')
    role.users.each { user ->
       println "User $user.username has role $role.name"
    }
    

    【讨论】:

    • 谢谢,它似乎工作,没有错误。你能告诉我如何使用引导程序创建测试数据,生成用户和角色简单的工作,但是我如何引导那里的关系?
    • 您使用动态 addToXXX 方法,在本例中为 role.addToUsers(user) - 请参阅 grails.org/doc/latest/guide/…
    猜你喜欢
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2013-12-30
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多