-2

以下のコードのように、年を取ったデータベースから日付を取得するコードがあります。

 Date expiryDate=dataMgr.getDate(); 
 int validity=2;    
 expiryDate.setYear(expiryDate.getYear() + validity); 
 // some piece of code
 tx.commit();

データベースからフェッチするために休止状態を使用しています。すべてが正常に機能していますが、問題はコミットした後です....日付を取得したDB年(dataMgr.getDate())も変更されます理由がわかりません?? 誰かが私を片付けることができますか?

たとえば、上記のコードを作成しますexpiryDate:4/21/2012(データベースから)。コミットした後、DB で変更されますが4/21/2014、これは起こるべきではありませんか?? その対応するオブジェクトをどこでも使用したり、どこでも更新したりしていませんか???

手伝ってください

4

1 に答える 1

1

オブジェクトはPersistent state1 つの にありtransactionます。さらに、両方ともexpiryDate同じdateMgr.getDateオブジェクトを参照しています。

参照を取得する代わりに、オブジェクトのクローンを取得します

Date expiryDate=dataMgr.getDate().clone();

構文がよくわからないので、確認してください。

于 2012-04-12T05:28:16.773 に答える