作为更改请求的结果,我需要为我的Grails应用程序实现正确的ORM。
我目前有以下简单的模型和关联:
static hasMany = [fees:Fee]
static belongsTo = [agent:Agent]
但是,现在我需要实现在代理之间分配单个费用的功能。我得出以下结论:
潜在的新模型协会
static hasMany = [agentfees:AgentFee]
no associations ??
static belongsTo = [fee:Fee]
在我看来,AgentFee将包含:
所以我的问题是。我是否应该在Agents和AgentFees之间建立关联,例如:
static hasMany = [agentfees:AgentFee]
static hasMany = [agentfees:AgentFee]
static belongsTo = [fee:Fee]
static belongsTo = [agent:Agent]
但这对于AgentFee中的多个belongsTo感觉很不对。使用GORM实施“费用拆分”概念的最佳方法是什么?
提前致谢,
约翰
最佳答案
听起来您正在将关系更改为多对多。这是该文档:http://grails.github.io/grails-doc/latest/guide/GORM.html#manyToMany
多对多关系需要数据库级别的联接表。但是,您很可能不需要加入表的域,即不需要AgentFee。 GORM将知道使用联接表。
唯一需要联接表的域对象的地方是联接表是否包含除促进多对多关系所需的列之外的其他列。在这种情况下,您将为联接表创建一个域,然后创建两个一对多关系,每个方向一个。
关于grails - 使用正确的Grails ORM(GORM)实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28830706/