我正在打电话

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


然后坚持相同的主键

 em.persist(someEntity)


抛出SQLIntegrityContraintViolatinException,即具有主键的实体已经存在。

如果我改变

someEntity.setName("Test");


然后用

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


它给我回更新了someEntity与

 someEntity.getName()


返回“测试”。

反映出someEntity中的更改,而未反映出其删除。

我是JPA的新手,我们将不胜感激。

最佳答案

重现对象通常不是一个好主意。最好对新对象使用新的ID,例如生成的ID。

如果必须重新生成对象,请尝试在单独的事务中执行此操作,或者至少在remove之后调用flush(),以便首先从数据库中删除它。

09-12 17:55