我的生产代码运行了2年。现在我们注意到Update操作中存在并发问题。我使用JPA作为我的ORM。在更新请求中我正在使用
this.entityManager.merge(entity);
现在我们要使用乐观锁来避免这种并发。我在谷歌做了一些搜索。我认为以下会照顾
this.entityManager.lock(entity, LockModeType.OPTIMISTIC);
这里我怀疑我们真的需要桌面上的@Version。我想我的客户现在不同意添加此专栏。
有人能告诉我有没有更好的方法来处理这种情况。
答案 0 :(得分:0)
嗯,在JPA中,没有。 JPA使用版本列来保持其一致性,并且似乎没有任何解决方法。
在Hibernate中有一些语法来解决这个问题:
Optimistic-lock = ‘all’
当您将Hibernate映射文件中的元素上的optimistic-lock属性设置为值'all'时,您告诉Hibernate检查自从检索到持久对象之后和更新之前相关行中的列没有更改数据库中的行。
了解详情:http://www.intertech.com/Blog/hibernate-optimistic-lock-without-"