gpt4 book ai didi

hibernate - Grails 域模型中的继承会导致重复的外键

转载 作者:行者123 更新时间:2023-12-03 06:34:44 25 4
gpt4 key购买 nike

在我的 Grails 2.5.0 应用程序的域模型中,我有两个具有相同属性的类 IncomeBenefit。我想将它们存储在单独的数据库表中,但将公共(public)字段移至基类中。我提出的模型是:

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
}
}

这会导致为评估福利之间的关系生成下表

enter image description here

评估福利之间的关系创建的表(毫不奇怪)是相同的。

我宁愿有一个 assessment_id,而不是在 assessmentbenefit 之间使用 assessment_benefit 连接表benefit 表中的外键,从而消除了对连接表的需要。

如何更改我的域模型来实现此目的?

最佳答案

How can I change my domain model to achieve this?

移动

static belongsTo = [assessment: Assessment]

从抽象父IncomeSource到子Benefit为:

class Benefit extends IncomeSource {
static belongsTo = [assessment: Assessment]
}

您还可以将这种关系保留在基类中,并将 belongsTo 也复制到子类中。

在任何一种情况下,都不会为评估福利创建连接表。

如果需要类似的行为,同样适用于收入

适用于 Grails 2.5.0

关于hibernate - Grails 域模型中的继承会导致重复的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com