无法使用带有hasmany grails域的addTo

无法使用带有hasmany grails域的addTo,第1张

概述我有两个带有 mysql的grails表 说A和B. 我想在这里实现的场景是: (1)A的实例可以有零个/一个/多个B实例. (2)当删除实例A时,必须删除其所有相关的B. (3)B的每个实例必须只与A的一个实例相关联. (4)A知道B,但B不知道A. 条件号4不是强制性的. 从上面的信息看来:从A到B的单向一对多 目前我在做的是:(从here获取帮助) class A{ String na 我有两个带有 mysql的grails表

说A和B.

我想在这里实现的场景是:

(1)A的实例可以有零个/一个/多个B实例.

(2)当删除实例A时,必须删除其所有相关的B.

(3)B的每个实例必须只与A的一个实例相关联.

(4)A知道B,但B不知道A.

条件号4不是强制性的.

从上面的信息看来:从A到B的单向一对多

目前我在做的是:(从here获取帮助)

class A{  String name  Set bs=[]  static hasMany=[bs:B]}Class B{  String name}B b=new B(name:'bname')b.save()A a=new A(name:'aname')a.addToBs(b)a.save()

保存两个条目时,(B正在保存,但A未保存)我使用addTo并获取错误没有方法addToBs()的签名

如果我错了,请帮助我并纠正我.

解决方法
class A{  String name  static hasMany=[bs:B] //by default bs are Set. no need of explicit declaration}Class B{  String name  static belongsTo = A //when delete a it's b also will get deleted}    B b1=new B(name:'bname1')    B b2=new B(name:'bname11')    B b3=new B(name:'bname2')    A a=new A(name:'aname1')    A a2=new A(name:'aname2')    a.save(flush:true)    a2.save(flush:true)    a.addToBs(b1)    a.addToBs(b2)    a2.addToBs(b3)    a.save(flush:true)    a2.save(flush:true)

无需保存b的实例.当我们将b实例添加到a的b集合中时,它会在我们保存a的实例时自动保存b的实例.

总结

以上是内存溢出为你收集整理的无法使用带有hasmany grails域的addTo全部内容,希望文章能够帮你解决无法使用带有hasmany grails域的addTo所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存