1

私が持っているシナリオがあります:いくつかの単純なプロパティ(int、Stringなど)と2セットの子を持つ親クラスParent。子供を設定するA; childrenBを設定します。

データベース内の親プロパティのみを保存/永続化し、その子にカスケードする関数saveWithCascade(Parent p)を持つ親simpleSave(Parent p)の保存関数を作成できますか?

後で編集:保存とは、実際には更新を意味します。プロパティまたはセットのみが変更されたことがわかっている場合は、休止状態で他のプロパティまたはセットが変更されたかどうかを確認するためだけに多くの選択を実行したくないためです。

4

2 に答える 2

0

特定の関連付けに対して特定の操作をカスケードするように Hibernate を構成した場合、それを無効にすることはできません。したがって、あなたが望むものを達成したいのは、PERSIST と MERGE をカスケードせず、saveWithCascade()メソッドですべてを手動で行うことだけです。

于 2010-05-20T22:27:26.690 に答える
0

はい、できます。休止状態のマッピングが適切に定義されていると仮定します。あなたは呼び出すことができますsession.save(Parent)

子供を保存しているときは、メソッドで次のようなことができます

Parent p = new Parent();
Child c = new Child();
p.addChild(c);
session.save(p);
session.flush();
session.save(c);
session.flush();

重要なことは、子供が関係を推進していることを確認することです。設定することでそれを行うことができますinverse = "true"

于 2010-05-20T20:33:02.280 に答える