【发布时间】:2015-08-03 15:10:02
【问题描述】:
在我的 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
}
}
这会为Assessment和Benefit之间的关系生成下表
为Assessment 和Benefit 之间的关系创建的表(不出所料)是相同的。
与其在assessment 和benefit 之间使用assessment_benefit 连接表,我更愿意在benefit 表中使用assessment_id 外键,从而消除对连接表的需要。
如何更改我的域模型以实现此目的?
【问题讨论】:
-
使用的 Grails 版本是什么?我使用了 Grails 2.4.4 并使用了您提供的域类,即 Assessment、Benefit、Income 和 IncomeSource。正如您所提到的,它没有创建额外的连接表。它还在福利、收入和收入来源表中添加了
assessment_id。因此,很容易验证您是否提供了用于此示例的 Grails 版本。 -
我使用的是 Grails 2.5.0
-
是否如答案所示工作?
标签: hibernate grails grails-orm