0

在 Grails 中,您可以有一个子类:

class Child {
    Father father
    static belongsTo = [Father, Mother]
}

有两个父类

class Mother{
}

class Father { 
}

看来,如果 I father.delete(),则 Grails 会引发数据库错误,指出Father无法删除,因为child仍然存在。

如果该类没有对该类的直接引用,all-delete-orphan我如何级联?ChildFatherChild

4

2 回答 2

2

使用 hasMany 使其成为双向的。

class Mother{
  static hasMany = Child
}
class Father{
  static hasMany = Child
}

这样做应该使级联工作,以便当您删除其中一个父母时,孩子也将被删除。

于 2011-05-06T21:57:05.740 回答
0

Peter Ledbrook 有一篇很好的文章涵盖了这个 GORM Gotchas Part 2

我无法让 belongsTo 唯一的部分工作,但这对我有用:

class Father {
  static hasMany = [children: Child]
}

class Child {
  static belongsTo = [father: Father]
}

void testDeleteItg() {
    def father = new Father().save()
    def child = new Child()
    father.addToChildren child
    child.save()
    def childId = child.id

    father.delete(flush:true)
    assertNull(Child.get(childId))
}
于 2011-05-06T21:55:07.873 回答