java - updatetime - spring boot jpa默认值



困难的时间设置与休眠JPA注释自动生成的时间 (1)

这与Hibernate本身无关。 上面指定的注释告诉Hibernate这些值将由数据库生成,因此在插入/更新实体后需要重新加载。

如果这是您想要的方式,则需要配置数据库(例如,通过创建触发器)来根据需要填充date_created / last_modified列。

另一种方法是不要将这些字段标记为生成的,而是在您的java代码中更新它们。 如果你正在使用JPA(通过Hibernate EntityManager),通过@PrePersist / @PreUpdate回调方法来做这件事是微不足道的:

@PreUpdate
@PrePersist
public void updateTimeStamps() {
    lastModified = new Date();
    if (dateCreated==null) {
      dateCreated = new Date();
    }
}

多亏了你们,我对hibernate的了解得到了改善。 现在我在这里打了一个关于current_timestamp的块。 这里是我的代码

@Column(name="DATE_CREATED", insertable=false, updatable=false, columnDefinition="timestamp default current_timestamp")
@org.hibernate.annotations.Generated(value=GenerationTime.INSERT)
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date dateCreated;

@Column(name="LAST_MODIFIED", insertable=false, updatable=false, columnDefinition="datetime")
@org.hibernate.annotations.Generated(value=GenerationTime.ALWAYS)
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date lastModified;

我希望date_created获得current_timestamp,我希望lastmodified插入每个updates.apparently我不能有2个current_timestamp字段在同一张桌子上。是否有其他方法来实现呢? 谢谢阅读





jpa