現在データベースにあるエンティティと保存されたばかりのオブジェクトを必要とするメソッド (compareEntities ) を実行したいと思います。emがEntityManagerである私のDAOでこのようなもの:
public void save(MyObj myObj) {
MyObj previous = null;
MyObj current = null;
Integer id = myObj.getId();
if (id == null) {
// new
current = em.persist(myObj);
} else {
previous = em.find(MyObj.class, id);
// update
current = em.merge(myObj);
}
compareEntities (previous, current);
}
問題は、保存されるエンティティがデータベースから取得され、それにいくつかの変更を加えたときに、データベースからデータを取得しようとすると (find メソッドを使用して)、変更されたデータを取得することです。エンティティが永続コンテキストで見つかったためです。同じトランザクション内のエンティティに変更を加えずに、データベースにあるデータを取得する方法はありますか?
ありがとう。