identifier of an instance of xx.entity was altered from xxKey@249e3cb2 to xxKey@74e8f4a3; nested exception is org.hibernate.HibernateException: identifier of an instance of xxentity was altered from错误
2024-10-07 19:41:33
用entityManager保存数据时报错如下
identifier of an instance of xx.entity was altered from xxKey@249e3cb2 to xxKey@74e8f4a3; nested exception is org.hibernate.HibernateException: identifier of an instance of xxentity was altered from xxKey@249e3cb2 to xxKey@74e8f4a3
一共存了三张表的数据,使用了事务,前面两张表存各存1条数据,最后一张表存两条数据。执行完成后报上面的错误。后来把最后一张表实体上的联合主键去掉不报错,但最后一张表只保存成功1条数据
太奇怪了。怀疑是事务引起,检查了是使用的
@Transactional(propagation = Propagation.SUPPORTS, rollbackFor = Exception.class)
写了单元测试,单独插入最后一张表两条数据可以成功插入。
最后找到问题关键,是因为最后一张表的其中一条数据是从数据库里读取出来的,另外一条是新插入的。把读取的数据copy到新new的实体后问题解决。
原因分析 处于Persistent状态的实体的id, hibernate是不允许修改后双保存回去。
最新文章
- T-SQL字符串相加之后被截断的那点事
- sqlServer去除字段中的中文
- UVALive 6908---Electric Bike(DP或记录型深搜)
- 雷克萨斯-RC
- struts2中用xml配置文件去验证填写信息
- Tomcat JSP提交参数中文乱码问题解决
- 为网站添加网址图标favicon.ico
- 远程mysql出现ERROR 1130 (HY000): Host '172.17.42.1' is not allowed to connect to this MySQL server
- What is therelationship between @EJB and ejb-ref/ejb-local-ref?
- cocos2dx3.0 超级马里奥开发笔记(两)——正确的规划游戏逻辑
- 《算法导论》读书笔记之排序算法—Merge Sort 归并排序算法
- 【Hibernate步步】--一对一映射双向关联具体解释(两)
- java hascode
- iOS tableView刷新
- 纯css提示效果 提示层
- 20175205 2018-2019-2 《Java程序设计》第五周学习总结
- ajax入门学习
- ABP框架系列之十:(Application-Services-应用服务)
- java—单例设计模式
- MySQL常用操作汇编