在实体(父子)之间共享插入/更新日期

时间:2017-03-13 18:10:46

标签: hibernate spring-data-jpa jpa-2.0

我的每个实体表都有一个时间戳列,用于保留创建日期或上次更新日期。

有一种简单的方法可以使用spring数据,jpa和hibernate在事务中的所有持久化对象中插入相同的日期,而不必手动将其设置为每个对象。

2 个答案:

答案 0 :(得分:0)

我会编写并绑定一个可以设置日期的org.hibernate.event.spi.PreInsertEventListener。您可能需要让您的实体实现一个公共接口,该接口公开setDate方法,因为PreInsertEvent只公开Object

您也可以采用相同的方式实施org.hibernate.event.spi.PreUpdateEventListener来更新更新日期。

在访问日期方面,您可以在事务开始时在本地线程上设置它,然后在侦听器中访问它。

答案 1 :(得分:0)

如果您使用的是JPA API,请查看@PrePersist注释。这需要在Entity中的方法(子或更好地使用创建基础实体并将其放在那里)

@PrePersist
public void prePersist() {
if(createDate == null) {
    createDate = new Date();
}
updateDate = new Date();
}