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 值字段的频繁查询?

mysql中有个字段如name 当查询不等于'百度'的时候,所有值为null的都查不到,该如何处理

如何处理 GraphQL 中的嵌套输入

事务内部只允许查询祖先查询,如何处理?

如何处理参数化查询中的空用户输入?

如何处理firebase中多个where查询的索引?