gpt4 book ai didi

database - Grails 一对一关系

转载 作者:太空狗 更新时间:2023-10-30 01:44:39 25 4
gpt4 key购买 nike

我尝试用两种不同的方式定义一对一关系:
chalice 2.0.3

案例一:

class Car {
String model
Engine eng
static constraints = {
eng unique: true
}
}

class Engine {
Double capacity
static belongsTo = [car : Car]
}

案例二:

class Car {
String model
static hasOne = [eng : Engine]
static constraints = {
eng unique: true
}
}


class Engine {
Double capacity
static belongsTo = [car : Car]
}

看起来很相似,都提供一对一的双向映射。不幸的是,DB 在这两种情况下都有不同的结构。

案例一: enter image description here

案例二: enter image description here

为什么一次 Car 和一次 Engine 保持链接到第二个表。

我的问题在哪里?当我查看代码时,从 DDD 的角度来看,这两种情况都表明 Car 类更重要并且 Car 聚合了 Engine。不幸的是,当我从数据库方面看案例 2 时,我宁愿说它是相反的——引擎聚合汽车。当然我可以使用第一种方法,但我看到的大多数关于 grails 的出版物都提出了第二种定义关系的方法。也许我误解了什么并且我以错误的方式使用 hasOne?

最佳答案

documentation on hasOne指出使用它会创建一个双向的一对一关系,其中外键在 child 身上。

belongsTo意味着在父级上执行的操作(例如保存和更新)将通过休眠级联到子级。

因此,如果您希望外键在 Engine 上,请在 Car 上使用 static hasOne = [engine:Engine]

如果您希望外键在 Car 上,则在 Car 上使用 Engine 引擎

在这两种情况下,在 Engine 上使用 belongsTo = [car: Car]

关于database - Grails 一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571268/

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