@version注释在jpa / eclipselink中无法正常工作

时间:2017-05-30 12:33:26

标签: java jpa eclipselink

我有一个基本实体类

其中一个字段(时间戳)具有@ 版本属性,因此Jpa会自动增加该值。

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

我没有以编程方式设置已编辑的值。

这是我的实体类:

public class BaseEntity implements  Serializable {  

@Column(name = "CREATED")
private Timestamp created;

@Column(name = "EDITED")
@Version
private Timestamp edited;

// other fields, getters and setters

}

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

如果有人帮助我,那就太棒了

由于

1 个答案:

答案 0 :(得分:2)

以下是一些基本准则:

  • 检查您是否导入了正确的包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"/>

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