域类如何级联'all-delete-orphan'给它没有引用的子节点?

时间:2011-05-06 21:25:49

标签: grails gorm grails-domain-class all-delete-orphan

在Grails中,您可以拥有一个子课程:

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

有两个父类

class Mother{
}

class Father { 
}

如果我father.delete(),那么Grails会抛出一个数据库错误,指出Father无法删除,因为child仍然存在。

如果 all-delete-orphan 类没有直接引用,如何级联Child Father Child 类?

2 个答案:

答案 0 :(得分:2)

使用hasMany将其设为双向。

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

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

答案 1 :(得分: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))
}