You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

版本化JPA实体中@Version字段的精准更新时机咨询

@Version字段递增时机详解

以下是JPA中@Version字段在各环节的递增时机及可访问性说明:

  • entitymanager.flush()(含commit触发的自动flush)
    @Version字段的递增操作发生在flush()执行过程中,flush完成后,实体对象上的@Version值会立即更新为递增后的版本号,此时可以直接访问该新值。

  • @PreUpdate回调方法
    @Version字段的递增是在@PreUpdate方法执行之后才触发的。因此在@PreUpdate方法内部,只能获取到更新前的旧版本号。

  • @PostUpdate回调方法
    @Version字段的递增操作在@PostUpdate方法执行之前就已完成。所以在@PostUpdate方法中,可以直接访问到已经递增后的新版本号。

验证示例代码

@Entity
public class DemoEntity {
    @Id
    private Long id;
    @Version
    private Integer version;
    private String content;

    @PreUpdate
    public void onPreUpdate() {
        // 此处输出更新前的旧版本号
        System.out.println("PreUpdate 当前版本:" + version);
    }

    @PostUpdate
    public void onPostUpdate() {
        // 此处输出已递增后的新版本号
        System.out.println("PostUpdate 当前版本:" + version);
    }
}

内容的提问来源于stack exchange,提问作者Pierre Demeestere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:25:20