我正在打电话
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(),以便首先从数据库中删除它。