用于为相应的生命周期事件指定回调方法。 该注释可以应用于实体类,映射超类或回调监听器类的方法。可以方便的自动填入实体类创建时间、更新时间。
@Data
@ToString
@MappedSuperclass
@EqualsAndHashCode
public class BaseEntity {
/**
* Create time.
*/
@Column(name = "create_time")
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
/**
* Update time.
*/
@Column(name = "update_time")
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;
@PrePersist
protected void prePersist() {
Date now = DateUtils.now();
if (createTime == null) {
createTime = now;
}
if (updateTime == null) {
updateTime = now;
}
}
@PreUpdate
protected void preUpdate() {
updateTime = new Date();
}
@PreRemove
protected void preRemove() {
updateTime = new Date();
}
}
注意,@PrePersist 是 JPA 规范中提供的,老版本 Hibernate SessionFactory (5.1.0.Final)并不能使用。但是新版本的 HIbernate(大于等于 5.2.17) 是可以使用的。
https://www.codenong.com/5640778/
https://vladmihalcea.com/prepersist-preupdate-embeddable-jpa-hibernate/