@version注释在JPA/Eclipselink中无法正常工作



我有一个基本实体类

其中一个字段(Timestamp(具有 @版本属性,因此JPA将自动增加该值。

但是,有时时间戳值不会更新,编辑的日期小于创建的日期,但理论上绝不会发生。

我没有设置编辑 value是编程。

这是我的实体类:

public class BaseEntity implements  Serializable {  
@Column(name = "CREATED")
private Timestamp created;
@Column(name = "EDITED")
@Version
private Timestamp edited;
// other fields, getters and setters
}

已经阅读了许多有关此@version注释的文章,但是我不明白为什么这个值不会更新,背后的原因是什么。

如果有人帮助我,那会很棒

谢谢

这是一些基本准则:

  • 检查您是否导入正确的软件包javax.persistence.Version
  • 保存对已经持久实体的更改时使用obj = entityManager.merge(obj);
  • 切勿手动更改版本场的价值。实体经理将照顾它。

以进一步调试编辑您的persitence.xml并将以下行添加到属性:

<property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.logging.parameters" value="true"/>
<property name="eclipselink.logging.sql.level" value="FINE"/>

这将启用罚款并生成大量输出。您将能够看到更新查询以及确切的情况。