したがって、オブジェクトを作成および更新するための次のコードを持つfollowエンティティがあります。メソッドを呼び出した後の結果のデータは、フィールドがローカルコンピューターで実行されているデータストアValue
のの値を持っていることです。1
なんで?オブジェクトはJPAで管理されており(またはこの記事で説明されているように添付されて)、更新されることになっていますか?em2.close()
実在物:
@Entity
public class MyObj {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long Id;
public int Value = 0;
}
コード:
public void createAndUpdate() {
Long id = null;
// Line below calls Persistence.createEntityManagerFactory("transactions-optional").createEntityManager()
EntityManager em1 = Database.getEntityManager();
MyObj obj = new MyObj();
obj.Value = 1;
em1.persist(obj);
em1.close();
id = obj.Id;
EntityManager em2 = Database.getEntityManager();
obj = (MyObj) em2.find(MyObj.class, id);
obj.Value = 2;
// NOTE1
em2.close();
}
マークされた行NOTE1
に挿入を試み em2.persist(obj)
ました(私が読んだものからでも、添付されたオブジェクトを返すem2.merge(obj)
ので、それは必要ではないはずです)。それらのどれも助けませんでした。find()
JPAv1を使用しています。