【发布时间】:2015-03-03 11:29:19
【问题描述】:
作为更改请求的结果,我需要为我的 Grails 应用程序实现正确的 ORM。
我目前有以下简单的模型和关联:
-
代理
static hasMany = [fees:Fee] -
费用
static belongsTo = [agent:Agent]
但是,现在我需要实现在代理之间分配单一费用的功能。我最终得到以下结果:
潜在的新模型协会
-
费用
static hasMany = [agentfees:AgentFee] -
代理
no associations ?? -
代理费
static belongsTo = [fee:Fee]
在我看来,AgentFee 将包含:
- 对费用的引用
- 对代理的引用
- 代理的费用分成百分比(例如 80%)
所以我的问题是。我是否还应该在 Agent 和 AgentFees 之间建立关联,例如:
-
费用
static hasMany = [agentfees:AgentFee] -
代理
static hasMany = [agentfees:AgentFee] -
代理费
static belongsTo = [fee:Fee] static belongsTo = [agent:Agent]
但这只是感觉 AgentFee 中的多个 belongsTo 有问题。使用 GORM 实现“费用分割”概念的最佳方式是什么?
提前致谢,
约翰
【问题讨论】:
-
你试过
static belongsTo = [fee:Fee, agent:Agent]吗? -
谢谢你。我没有尝试过,但我的问题更多——我的建模方式一开始就正确吗?我的“费用分摊”方法正确吗?
-
对我来说看起来不错,但是,根据我的经验 - 如果您不使用脚手架控制器(大多数时候您不使用)也不使用自动数据库模式创建(另外,您应该t),然后使用 belongsTo 和 hasMany 属性带来的痛苦多于收获 - 就我个人而言,我只将引用作为域类中的常规字段而不是 belongsTo,并且完全跳过 hasMany
-
@kamil 如果你不使用 hasMany 你如何映射你的一对多关系?你的建议似乎不合理。
-
如果您不将 hasMany 用于一对多关系,我也会担心。
标签: grails orm model associations grails-orm