【问题标题】:How to create multiple one-to-many relationships between domain classes如何在域类之间创建多个一对多关系
【发布时间】:2017-09-21 11:18:10
【问题描述】:

我有一个 Account 类,其中包含许多经理(用户类)和代表(用户类)。

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

然后,我有一个属于一个帐户的用户类。使用 User 类中的 Role Enum 将用户区分为经理或代表。

class User {
    static belongsTo = { account: Account }
    Role role
}

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

我意识到我需要在这里使用 mapped_by,但是我不明白应该如何使用它。经理和代表通过用户类中的角色枚举来区分。

我查看了几个 stackoverflow 问题#1#2,但大多数时候,问题通过其他关系得到解决。

我特别想在 Account 和 User 类之间使用 2 个一对多的关系。

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

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

【问题讨论】:

  • “问题是,当我创建任何类型的用户并保存它时,grails 最终会将该用户添加到帐户对象中的经理和代表集。”你能粘贴那个“创建”代码吗?
  • 请检查编辑

标签: grails mapping grails-orm grails-domain-class


【解决方案1】:

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

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)
}

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 2020-08-03
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多