1

私が知っているように、Hibernateは、セッションの値に添付されたオブジェクトが変更されると、データベースを更新します。データベースから新しいコピーを取得し、変更されたオブジェクトを破棄して新しいコピーを再アタッチする方法はありますか?

以下は、Hibernate を使用したデータベースのクエリから取得したオブジェクトです。

Rtpmast rtpmast = (Rtpmast) iterator.next();

以下のコードを実行したら

rtp.setRptval1(promotionMethod.getType());

Hibernate は、オブジェクトが変更されたことを登録します。後でトランザクションをコミットするか、データベースにクエリを実行すると、セッションがフラッシュされますか?

私が望むのは、一時的に更新し、Rtpmast object後で変更されたオブジェクトを破棄することです。

4

1 に答える 1

5

私が知っているように、Hibernateは、セッションの値に添付されたオブジェクトが変更されると、データベースを更新します。

session.save(...)実際、Hibernateはsession.delete(...)などのメソッドを呼び出した後にのみデータベースを更新します。取引中の場合は、変更する必要もありcommitます。

あなたが望むのはevict()、あなたが言及したように、オブジェクトを使用して再クエリするか、作業中のインスタンスを切り離すことclose()です)。Session

于 2012-04-24T06:42:41.510 に答える