gpt4 book ai didi

jpa - 通过 Spring Data JPA 执行批量更新时如何更新 @Version 字段

转载 作者:行者123 更新时间:2023-12-04 12:21:22 25 4
gpt4 key购买 nike

我正在使用 spring 数据存储库,但有一个问题找不到答案。我的存储库查询是:

@Modifying
@Query("UPDATE User u SET u.firstName = 'blabla' WHERE u.loginName = 'admin'")
public int test();

和实体 User有一个 javax.persistence.Version注释字段:
 @Version
private Long version;

当我执行查询时,版本字段不会更新,但是如果我执行以下操作而不是查询:
User user = this.userRepository.findUserById(1L);
user.setFirstName("blabla");
this.userRepository.save(user);

版本字段已更新。为什么?

最佳答案

JPA 2.0 规范的第 4.10 节明确指出:

Bulk update maps directly to a database update operation, bypassing optimistic locking checks. Portable applications must manually update the value of the version column, if desired, and/or manually validate the value of the version column.



一般来说,批量更新和删除几乎绕过了持久性提供程序应用的许多功能,您在简单地保存实体时可能会习惯使用这些功能。除了乐观锁定,这还包括持久性提供者管理的持久性操作的级联。

关于jpa - 通过 Spring Data JPA 执行批量更新时如何更新 @Version 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21576079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com