0

私がしたときに実際に何が起こるか知りたい:

Person p1 = new Person();
...
p1.save()

保存更新のカスケード順序に関して。

ここに、それらが正しいかどうかを知りたい理由がいくつかあります。

a) Personに 'inverse=false' (デフォルト) との関係が少なくとも 1 つある場合、最初にすべてのカスケードを実行し、最後に p1 自体を永続化します。(FK の正体がまだわかっていない可能性があるため)

b) Person が「inverse=true」のすべての関係を持っている場合、最初に p1 を保存してからカスケードを実行できます。

c) Person<-->Car の 1 対 1 の双方向関係があり、両方に 'inverse=false' と 'save-update' カスケードがあるとします。

c.1) 何が起こるか?. 無限ループの状況のようです。

c.2) 正しい解決策は、Person では inverse=true で 'cascade=save-update' を実行し、Car では cascade と inverse=false を実行しないことですか?

カスケードを実行する順序の決定の背後にある実際のロジックと、「逆」プロパティがどのように関係しているかについてのリンクが役立つかもしれません。

前もって感謝します

4

1 に答える 1

1

カスケードでは、1 つの操作(保存、更新、および削除)が完了した後、互いに関係を持つ別のエンティティに対して他の操作 (保存、更新、および削除) を呼び出す必要があるかどうかを決定します。

そのため、問題 a と b のカスケードは、最初のプロセスが完了した後に常にチェックされます (常に発生するとは限りません) 。カスケードがまだ必要な場合は、休止状態がカスケードを実行します。

問題 C の場合、1 対 1 および多対 1 には逆キーワードがないため、無視されます。しかし、正しい双方向の 1 対 1 を作成したい場合は、ここで確認できます。

于 2013-08-04T04:17:46.037 に答える