我的每个实体表都有一个时间戳列,用于保留创建日期或上次更新日期。
有一种简单的方法可以使用spring数据,jpa和hibernate在事务中的所有持久化对象中插入相同的日期,而不必手动将其设置为每个对象。
答案 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();
}