2

質問は件名にあります。

現在、私が観察した動作は、 を呼び出したときにParent.removeFromChilds(child)、 child が DB から削除されないことです (つまり、 で見つけることができますChild.findBy...(args))。

それが正しい行動かどうか興味があります。はいの場合 - 1 つのトランザクション内でリレーションと子の両方を削除する最良の方法は何ですか?

いいえの場合 - 何を間違えたらよいですか?

4

1 に答える 1

3

デフォルトでは、1 対多の所有側を削除するとカスケードが削除されます。子を削除するだけでは削除されません。これは、関係の所有側で「all-delete-orphan」のカスタム カスケード動作を指定することで変更できます。Grails のドキュメントから:

class Person {

String firstName

static hasMany = [addresses: Address]

static mapping = { addresses cascade: "all-delete-orphan" } }

アップデート

GORM Gotchas のパート 2では、それほど自明ではないaddTo振る舞いremoveFromについて非常によく分析されています。あなたが探している正確な情報が含まれていると思います。

于 2012-06-22T21:07:11.793 に答える