gpt4 book ai didi

grails - 如何在 GORM 中建立可选的一对一关系?

转载 作者:行者123 更新时间:2023-12-02 07:25:16 24 4
gpt4 key购买 nike

我有 2 个对象,ObjectAObjectB

ObjectA创建时,ObjectB还不存在(并且不能,因为还没有数据)。

一旦创建了ObjectB,它就需要附加一个相应的ObjectA(如果存在合适的对象的话)。如果没有合适的 ObjectA,则新的 ObjectB 根本无法连接到其中。

因此,所有 ObjectA 实例最终都会附加到 ObjectB,但并非所有 ObjectB 实例都会附加到 ObjectB有一个ObjectA

本质上,我正在寻找 GORM 来构建这样的数据库表:

ObjectA
- Id (NotNull, unique)
- ObjectB_Id[FK: ObjectB.Id] (unique)

ObjectB
- Id (NotNull, unique)

如何将 GORM 域类组合在一起来实现此目的?

我已经尝试了 hasOnebelongsTo、原始属性、nullable: trueunique: true 的几乎所有组合 我能想到的限制,但我一定缺少一个。这看起来并不是一个特别奇怪的场景,因此必须有某种方法来实现这一点。

最佳答案

通常情况下,将我的想法组合成一个问题会引导我找到解决方案:

Class ObjectA {
ObjectB objectB

static constraints = {
objectB nullable: true, unique: true
}
}

Class ObjectB {
static belongsTo = [objectA: ObjectA]

static constraints = {
objectA nullable: true
}
}

我似乎无法解决的唯一问题是可以设置 ObjectB.objectAObjectA已与 ObjectB 关联。当保存新的关联时,GORM 只是不保存该关联。没有抛出任何错误,并拉动新的 ObjectB数据库中的值是 objectA属性未设置。

添加unique: trueobjectA ObjectB 中的约束类也没有帮助。不是默默地失败,而是抛出一个错误,表明由于未设置参数而导致唯一性检查失败。

关于grails - 如何在 GORM 中建立可选的一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383160/

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