EntityManager em.remove()和em.persist()未反映在同一上下文中,而Entity中的更改



我正在调用

 SomeEntity someEntity = em.find(EntityPK.Class,entityPK);
 em.Remove(entityPK);

然后在相同的主密钥上保持

 em.persist(someEntity)

引发SQLIntegrityContrintViolatinException,即具有主键的实体已存在。

而如果我更改

someEntity.setName("Test");

然后用取回同一实体

someEntity = em.find(EntityPK.Class,entityPK);

它给了我更新的someEntity与

 someEntity.getName()

返回"Test"。

someEntity中的更改会得到反映,而其删除不会得到反映。

我是JPA的新手,如有任何帮助,我们将不胜感激。

转生对象通常不是一个好主意。最好为新对象使用新的id,例如生成的id。

如果必须重新生成和对象,请尝试在单独的事务中执行,或者至少在移除后调用flush(),首先将其从数据库中删除。

最新更新