【问题标题】:Grails(GORM) - Multiple many-to-many and cascade deleteGrails(GORM) - 多个多对多和级联删除
【发布时间】:2014-07-31 14:53:21
【问题描述】:

假设我有 3 个域类:

class Book {
    static belongsTo = [Author,User]
    static hasMany = [authors:Author,usersWhomReadThisBook:User]
    String title
}
class Author {
    static hasMany = [books:Book]
    String name
}
class User {
    static hasMany = [booksRead:Book]
    String name
}

belongsTo 定义了级联关系,因此删除父级将删除所有属于它的对象。

问题是:当我删除用户时,它会级联并删除用户已阅读的书籍吗?即使它仍然属于现有的作者?还是只从连接表中删除?

该用例的文档不清楚。

【问题讨论】:

  • 将 bi-dir m2m 转换为 o2m 从而摆脱大部分问题 :)
  • 我也在考虑同样的事情,但我需要知道是否有更优雅的解决方案
  • 为什么不创建一个测试应用程序并观察其行为?
  • 删除不会在多对多关系中级联。
  • 我的意思是 m2m 带来的问题多于它解决的问题

标签: grails many-to-many grails-orm


【解决方案1】:

你的问题是:
When I delete a User does it cascade up and delete the Books the user have read? Even if it still belongs to an existing Author? Or does it only delete from the join table?

答案是:没有删除不是多对多级联的,这里如果我们只删除用户,它将被删除,因为书籍与其他类 Author 相关联。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    相关资源
    最近更新 更多