JPQL 更新查询如何处理@Version 字段?
Posted
技术标签:
【中文标题】JPQL 更新查询如何处理@Version 字段?【英文标题】:How does JPQL update query handle @Version field? 【发布时间】:2020-05-03 13:11:47 【问题描述】:JPQL 更新查询是否增加 @Version 字段以支持乐观锁定?我想不会,但是这意味着 JPQL 更新将始终通过,即无论是否有活动事务试图更新给定实体,它都会更新实体。在这种情况下,由于@Version 字段未更改,活动事务将通过,从而导致更新丢失。我对吗?
在这种情况下,您将如何避免丢失更新?我应该使用悲观锁定吗?
【问题讨论】:
您可以参考***.com/questions/2572566/java-jpa-version-annotation 这能回答你的问题吗? Java - JPA - @Version annotation @Dherik 接受的答案不是,但最后一条评论是。我将把它添加为这个问题的答案。 【参考方案1】:JPA 在后台为您管理版本,但是当您通过 JPAUpdateClause 更新记录时它不会这样做,在这种情况下,您需要手动将版本增量添加到查询中。
【讨论】:
以上是关于JPQL 更新查询如何处理@Version 字段?的主要内容,如果未能解决你的问题,请参考以下文章
当 MySql 不支持 json 索引时,Javers 如何处理对 json 值字段的频繁查询?