当我尝试更改我的设置时,我收到以下异常@ID
in an @Entity
.
identifier of an instance of com.google.search.pagerank.ItemEntity was altered from 1 to 2.
我知道我正在更改表中的主键。我正在使用 JPA 注释。
我通过使用这个单一的 HQL 查询解决了这个问题:update Table set name=:newName where name=:oldName
而不是使用更多的 OO 方法:
beginTransaction();
T e = session.load(...);
e.setName(newName);
session.saveOrUdate(e);
commit();
知道差异是什么吗?
实际上,根据 JPA 规范,禁止更改主键:
应用程序不得更改主键的值[8]。如果发生这种情况,则行为未定义。[9]
(来自 EJB 3 持久性 (JPA) 规范,第 2.1.4 段)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)