我正在调用
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(),首先将其从数据库中删除。