gpt4 book ai didi

java - 持久化之前的 JPA @Version 值

转载 作者:行者123 更新时间:2023-12-02 05:06:49 25 4
gpt4 key购买 nike

我正在使用 JPA 和 @Version数据库实体对象的属性。

事实是,我在数据库中有一个字段“ENTITY_VERSION”映射到@Version,而且我在 xml 中有这个 ENTITY_VERSION 表示 blob 类型中的所有对象。

@Version 值是在记录持久化后立即自行创建的:因此,xml 将始终是脏的......

例如:

  1. 首先保存 xml 对象“x”(例如,实体使用版本 1 保存)
  2. 保留对象“x”(版本 -ENTITY_VERSION - 自动放置为 2)。
  3. 在表对象 x 中,ENTITY_VERSION 字段的值为 2,但 xml 的值为“1”

我尝试使用 @PrePersist 更新 xml,获取 @Version 的值,但该值始终是旧值。

无论如何要在持久之前获取@Version值吗?

最佳答案

@Version 字段仅在事务成功提交后递增。这是设计使然。但它是递增的。

您可以确定,事务成功的唯一方法是事务提交时数据库中的 @Version 字段与实体中的 @Version 字段相同。因此,以及版本将增加的事实,您还可以确切地知道成功提交 (X+1) 后它将具有什么值。这是您应该首先放入 xml 中的值。

但是要知道,如果事务回滚,您的 xml 也会变脏。

关于java - 持久化之前的 JPA @Version 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27718807/

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