我的每个实体表都有一个时间戳列以保持创建日期或最后一个更新日期。
弹簧数据,JPA和Hibernate是否有一种简单的方法将同一日期插入我的所有持久对象中,而无需手动将其设置为每个对象。
我会编写并绑定可以设置日期的org.hibernate.event.spi.PreInsertEventListener
。您可能需要让您的实体实现一个公共接口,该接口暴露了setDate
方法,因为PreInsertEvent
仅公开Object
。
您也可以以相同的方式实现org.hibernate.event.spi.PreUpdateEventListener
来更新更新日期。
就可以访问日期,您可以在交易开始时将其设置在本地线程上,然后在侦听器中访问。
如果您使用的是JPA API,请查看@prepersist注释。这需要采用实体的方法(儿童或更好地使用,创建一个基本实体并将其放在那里)
@PrePersist
public void prePersist() {
if(createDate == null) {
createDate = new Date();
}
updateDate = new Date();
}