0

我打电话给

 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 的新手,任何帮助将不胜感激。

4

1 回答 1

1

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

如果您必须转世和反对,请尝试在单独的事务中执行此操作,或者至少在删除后调用 flush() 以首先将其从数据库中删除。

于 2013-09-05T13:54:31.200 回答