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 次  |  
        
|   最近记录:  |