0

Grailsでは、子クラスを持つことができます。

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

2つの親クラスを使用

class Mother{
}

class Father { 
}

Ifather.delete()の場合、GrailsはデータベースエラーをスローしてFather、がまだ存在しているため削除できないことを示しchildているようです。

クラスにクラスへの直接参照がない場合、どうすればall-delete-orphanカスケードできますか?ChildFatherChild

4

2 に答える 2

2

hasManyを使用して双方向にします。

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

これを行うと、親の1つを削除すると子も削除されるように、カスケードが機能するはずです。

于 2011-05-06T21:57:05.740 に答える
0

Peter Ledbrookが、この GORM GotchasPart2をカバーした優れた記事を掲載しています。

私は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 に答える