我有一个实体:
@Entity
public class Book {
@Version
private Integer version;
}
在并发事务中,我有一个OptimisticLockException错误,因为我使用了@Version属性。没有@Version我有一个错误: ConcurrentModificationException。
OptimisticLockException和ConcurrentModificationException之间的区别是什么?
答案 0 :(得分:0)
OptimisticLockException
和ConcurrentModificationException
(我假设它来自java.util
)是两个完全不同的例外,不能互换使用。
顾名思义,第一个与乐观锁定有关,这基本上意味着其他事务已将更改提交给您尝试更新的实体。
当不允许同时进行对象修改时,引发第二种情况。例如,当您尝试从集合中删除一个元素时,您正在遍历。我无法从摘要中推断出您提供的是触发此异常的确切原因,但通常与乐观锁定和JPA无关。