Dón*_*nal 14 grails hibernate grails-orm
在我的Grails 2.5.0应用程序的域模型中,我有两个类Income,Benefit它们具有相同的属性.我想将它们存储在单独的数据库表中,但将公共字段移动到基类中.我提出的模型是:
class Assessment {
Date dateCreated = new Date()
User user
static hasMany = [incomes: Income, benefits: Benefit]
}
class Benefit extends IncomeSource {}
class Income extends IncomeSource {}
abstract class IncomeSource {
String name
BigDecimal amount
PaymentFrequency frequency
static belongsTo = [assessment: Assessment]
static mapping = {
tablePerHierarchy false
}
}
Run Code Online (Sandbox Code Playgroud)
这将导致之间的关系要产生的下表Assessment和Benefit

表对之间的关系创建Assessment和Benefit是(勿庸置疑)相同.
而不是assessment_benefit在assessment和之间有一个连接表benefit,我宁愿assessment_id在benefit表中有一个外键,从而不需要连接表.
如何更改我的域模型以实现此目的?
如何更改我的域模型来实现这一目标?
移动
static belongsTo = [assessment: Assessment]
Run Code Online (Sandbox Code Playgroud)
从抽象父级IncomeSource到子级Benefit为:
class Benefit extends IncomeSource {
static belongsTo = [assessment: Assessment]
}
Run Code Online (Sandbox Code Playgroud)
您还可以将这种关系保留在基类中,并复制belongsTo到子类中。
Assessment在任何一种情况下都不会创建连接表Benefit。
Income如果需要类似的行为,同样适用于。
适用于 Grails 2.5.0
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |