关于entityManager.merge()方法使用问题

在遍历数据更新使用merge(),触发了乐观锁,奇怪的是实体第一次提交是没有触发可以正常保存,第二次触发得时候就会有乐观锁得错误,项目清理重启之后还是会有乐观锁问题,具体报错信息
Exception Description: The object [com.company.dataManager.entity.DataColumn-712bdc66-fdf9-360a-57cd-d347393767c8 [managed]] cannot be updated because it has changed or been deleted since it was last read.
Class> com.company.dataManager.entity.DataColumn Primary Key> 712bdc66fdf9360a57cdd347393767c8
具体代码使用:
image

entityList 在第一次 entityManager.merge() 之后没有更新?

使用 merge() 方法的重要原则就是,使用返回的实例进行继续操作而丢掉传入的那个实例。

第一次更新了,第二次调用该方法的时候报错的,我看文档说是会生成update sql,跟断点我也的确跟到一个问题,就是第二次之后每次都会先走删除然后再flush(),这个时候更新应该会报错,我这样想的,也就是说merge()返回后需要调用哪个方法进行提交呢?

我是说的你的 entityList 这个实体数组,在第一次成功之后,没有用获取到的更新后的实体进行更新?

2 个赞

瞬间明白了,谢谢!