【发布时间】:2017-05-30 12:33:25
【问题描述】:
我有一个基础实体类
其中一个字段(Timestamp)有@version属性,所以Jpa会自动增加值。
但是,有时时间戳值没有得到更新,编辑日期小于创建日期,但这在理论上不应该发生。
我没有以编程方式设置 edited 值。
这是我的实体类:
public class BaseEntity implements Serializable {
@Column(name = "CREATED")
private Timestamp created;
@Column(name = "EDITED")
@Version
private Timestamp edited;
// other fields, getters and setters
}
看过很多关于这个@version注解的文章,但是我不明白为什么这个值不会更新,这背后的原因是什么。
如果有人帮助我,那就太好了
谢谢
【问题讨论】:
-
在事务提交后检查托管实体中的值是否已更改(或已调用刷新)。常见的错误是查看分离实体中的值或在事务同步到数据库之前查看值,因为 JPA 仅在它即将进入数据库时更新值。否则,请提供有关您看到问题与未看到问题的情况的更多信息。
-
谢谢@Chris。我实际上正在更改关联子实体之一的属性,但没有更改我拥有
@Version Timestamp version;属性的父实体的属性,并且由于该版本属性未使用新时间戳进行更新。一旦我更改了父实体中的属性,版本属性就会获得新的时间戳。有用。请注意,切勿手动更新标有@version的属性的值。每当实体的属性发生变化时,JPA 都会用新值更新它。
标签: java jpa eclipselink