所以我有下面的实体和下面的代码来创建和更新对象。调用该方法后的结果数据是该字段Value
的值1
在我本地计算机上运行的 Datastore 中。为什么?对象不是由 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)
and em2.merge(obj)
(即使从我读过的内容来看,这不应该是必要的,因为find()
返回了一个附加的对象)。他们都没有帮助。
我正在使用 JPA v1。