grails - 无法将 addTo 与 hasmany grails 域一起使用

标签 grails grails-orm grails-domain-class

我在 grails 和 mysql 中有 2 个表

说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集合中时,它会自动保存b的实例当我们保存 a 的实例时。

关于grails - 无法将 addTo 与 hasmany grails 域一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23536550/

相关文章:

grails - 有选择地从 Grails 域对象中的列表中检索对象

grails - 如何从Grails脚手架 View 中隐藏密码字段?

unit-testing - Grails:模拟休眠域操作-beforeInsert

grails - 这是在静态映射 block 中访问Grails配置的安全方法吗?

unit-testing - 在 Intellij IDEA 中启动慢速 Grails 测试

mysql - 无法在 Grails 应用程序中更新 mysql 中的表

Grails 表单提交原因 404

java - Grails/GORM withCriteria 搜索 toString()

grails - 如何让 GVM 识别我现有的 Grails 和 Groovy 安装?

grails - Grails 3 的 HikariCP