@PrePersist 注解

用于为相应的生命周期事件指定回调方法。 该注释可以应用于实体类,映射超类或回调监听器类的方法。可以方便的自动填入实体类创建时间、更新时间。

@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/

上一篇:2.28


下一篇:SpringBoot系列---【如何优雅的格式化实体类中的日期的返回格式?】