我的生产代码运行了两年。现在我们注意到Update操作存在并发问题。我正在使用 JPA 作为我的 ORM。在更新请求中我正在使用
this.entityManager.merge(entity);
现在我们想使用乐观锁来避免这种并发。我在谷歌上做了一些搜索。我认为下面会照顾
this.entityManager.lock(entity, LockModeType.OPTIMISTIC);
这里我怀疑我们是否真的需要表中的@Version。我想我的客户现在不会同意添加此栏目。
有人可以告诉我有没有更好的方法来处理这种情况。
最佳答案
嗯,在 JPA 中,没有。 JPA 使用版本列来保持其一致性,并且似乎没有任何方法可以解决这个问题。
在 Hibernate 中,有一些语义可以解决这个问题:
Optimistic-lock = ‘all’
当您将 Hibernate 映射文件中元素的乐观锁属性设置为值“all”时,您是在告诉 Hibernate 检查自检索持久对象以来以及更新数据库中的行之前,关联行中的列是否未发生更改。
了解更多:http://www.intertech.com/Blog/hibernate-optimistic-lock-without- ”
关于java - 使用 JPA 进行合并操作的乐观锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29472689/