如何在域 类 之间创建多个一对多关系

How to create multiple one-to-many relationships between domain classes

我有一个帐户 class,其中有许多经理(用户 class)和代表(用户 class)。

class Account {
    static hasMany = { reps: User, managers: User }
}

然后,我有一个用户 class 属于一个帐户。使用用户 class.

中的角色枚举将用户区分为经理或代表
class User {
    static belongsTo = { account: Account }
    Role role
}

问题是,当我创建任何类型的用户并保存它时,Grails 最终将该用户添加到帐户对象中的经理和代表集中。

我知道我需要在这里使用 mapped_by,但是我不明白应该如何使用它。经理和代表通过用户 class.

中的角色枚举来区分

我看过几个 Whosebug 问题 , #2 但是大多数时候,问题可以通过其他关系得到解决。

我特别想在帐户和用户之间使用 2 个一对多关系 class。

编辑: 初始化代表的代码:

def addRep(manager) {
    User rep = new User( account: manager.account, 
                         role:    Role.REP)
    rep.save(flush: true, failOnError: true)
}

您需要指定要使用的关联:

def addRep(manager) {
    User rep = new User(role: Role.REP)
    manager.account.addToReps(rep) // This will do the bi-association
    rep.save(flush: true, failOnError: true)
}