0

1 つの休止状態セッションで。

最初に、session.get(id, class) を使用して 1 つのレコードを取得することにより、A などのオブジェクトを取得し、オブジェクト A にいくつかの変更を加えました。

次に、criteria.list() を使用して検索を行い、オブジェクト A が参照する同じデータを参照するオブジェクト B を含むオブジェクト リストを取得しました。オブジェクト B にも変更を加えました。

セッションをコミットした後、行った変更はデータベース A または B、またはその両方に保持されますか?

4

2 に答える 2

0

データベースから何かをフェッチするたびに、新しいオブジェクトが作成されました。オブジェクトの値が同じでも、内部的には異なります。

値を一度だけフェッチしてオブジェクトのコピーを作成する場合、オブジェクトへの参照を作成するだけなので、最初の変更は2番目にも反映されます。

変更をコミットすると、最後に保存されたオブジェクトの値がテーブル内の値になります。その理由は、前のオブジェクトの値が最初に保存され、2 番目に上書きされたためです。

于 2013-10-17T05:46:28.837 に答える