我有一个基本实体类
其中一个字段(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"/>
这将启用罚款并生成大量输出。您将能够看到更新查询以及确切的情况。