1

削除をカスケードしない 1 対多の関連付けを作成したいと考えています。Grails Referenceを読むと、

デフォルトのカスケード動作では、保存と更新がカスケードされますが、begsTo も指定されていない限り、削除はカスケードされません。

それは私が見ている動作ではありません。次のクラスの実装では、begsTo なしでカスケードされた更新、保存、および削除を取得します。

class A {
   static hasMany = [bees: B]
}
class B { }

ある Hibernate セッションで、カスケード更新が機能することを確認するために次のことを行います。

def a = new A()
a.save()
def b1 = new B()
a.addToBees(b1)
def b2 = new B()
a.addToBees(b2)

次に、別の Hibernate セッションで、次のコードは ABのすべてのインスタンスを削除します。

A.list().each { a -> a.delete() }

これはバグですか?ドキュメントは間違っていますか?私は何か間違ったことをしていますか?この動作を確認するために Grails コンソールを使用しています。

4

2 に答える 2

0

親オブジェクトを保存すると、動的な「addTo」メソッドが追加内容を自動的に保存します。

問題は実際には Grails コンソールにあることが判明しました。コードを統合テストに投入すると、問題なく動作しました。

于 2010-12-10T05:24:22.947 に答える
0

b1 と b2 がデータベースにコミットされていますか? 2行目ではなく、最後にa.saveを使用すると、期待した結果が得られると思いました。

于 2010-12-09T15:36:18.403 に答える