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

grails – 如何在GORM中建立可选的一对一关系?,第1张

概述我有2个对象,ObjectA和ObjectB. 当ObjectA被创建时,ObjectB不存在(并且由于没有数据而不能). 一旦创建了ObjectB,如果存在适当的ObjectB,它需要附加相应的ObjectA.如果没有合适的ObjectA,则新的ObjectB不会连接到一个. 因此,所有ObjectA实例最终都将附加到ObjectB,但并非所有ObjectB实例都将具有ObjectA. 基本上, 我有2个对象,ObjectA和ObjectB.

当ObjectA被创建时,ObjectB不存在(并且由于没有数据而不能).

一旦创建了ObjectB,如果存在适当的ObjectB,它需要附加相应的ObjectA.如果没有合适的ObjectA,则新的ObjectB不会连接到一个.

因此,所有ObjectA实例最终都将附加到ObjectB,但并非所有ObjectB实例都将具有ObjectA.

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

ObjectA- ID (NotNull,unique)- ObjectB_ID[FK: ObjectB.ID] (unique)ObjectB- ID (NotNull,unique)

如何组合GORM域类来完成此 *** 作?

我已经尝试了几乎所有的hasOne,belongsTo,原始属性,可空的组合:真实和独特:我能想到的真正的约束,但我必须错过一个.这似乎不是一个特别奇怪的场景,所以必须有一些方法来实现这一点.

解决方法 通常情况下,将我的想法放在一起提出问题就会引出我的解决方案:

Class ObjectA {    ObjectB objectB    static constraints = {        objectB nullable: true,unique: true    }}Class ObjectB {    static belongsTo = [objectA: ObjectA]    static constraints = {        objectA nullable: true    }}

我似乎无法解决的唯一问题就是可以将ObjectB.objectA设置为已经与ObjectB关联的ObjectA.保存新关联时,GORM不会保存关联.不会抛出任何错误,并且将新的ObjectB从数据库中拉出会使其objectA属性未设置.

添加唯一:true对象在ObjectB类中的约束也没有帮助.而不是静默失败,将抛出错误,指示由于未设置的参数而导致唯一性检查失败.

总结

以上是内存溢出为你收集整理的grails – 如何在GORM中建立可选的一对一关系?全部内容,希望文章能够帮你解决grails – 如何在GORM中建立可选的一对一关系?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存