gpt4 book ai didi

java - EntityManager em.remove() 和 em.persist() 未反射(reflect)在同一上下文中,而反射(reflect)了实体中的更改

转载 作者:行者123 更新时间:2023-12-01 14:09:33 27 4
gpt4 key购买 nike

我正在打电话

 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()

返回“测试”。

反射(reflect)了 someEntity 中的更改,但未反射(reflect)其删除。

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

最佳答案

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

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

关于java - EntityManager em.remove() 和 em.persist() 未反射(reflect)在同一上下文中,而反射(reflect)了实体中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631879/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com