3

アクション、サービス、DAO レイヤーの 3 つのレイヤーがあります。ID 123 の hibernate を使用して DB からオブジェクト (Employee クラス) をロードしました。

Employee e = service.getEmp(123);
e.setName("Ashok");

Order o = new Order
o.setNumber(567);

service.saveOrUpdate(o);

このシナリオで、従業員オブジェクトを保存するように言わないのに、なぜ従業員オブジェクトを更新しようとしているのですか? それをセッションから切り離す方法は?休止状態で従業員オブジェクトを更新したくありません。

4

1 に答える 1

3

このシナリオでは、保存するように言わないのに、なぜ従業員オブジェクトを更新しようとしているのですか?

私は休止状態のドキュメントから引用します:

トランザクションの永続インスタンス(つまり、セッションによってロード、保存、作成、または照会されたオブジェクト)は、アプリケーションによって操作でき、永続状態への変更は、セッションがフラッシュされたときに永続化されます。[...]。変更を永続化するために、特定のメソッド(update()などの目的が異なる)を呼び出す必要はありません。

それをセッションから切り離す方法は?

コレクションを。でマークしcascade="evict"ます。次に、オブジェクトをフラッシュする前に、 Session.evict(Object)オブジェクトをフラッシュします(オブジェクトをフラッシュする場合は、必要な処理が完了FlushMode.AUTOするまでオブジェクトを設定している可能性MANUALがあります)。

于 2012-12-11T18:27:39.857 に答える