如何为hibernate实体中的审计字段生成纪元时间戳?

时间:2016-07-27 11:16:44

标签: hibernate spring-mvc

我创建了一个抽象实体类,只有审计字段即。 createdDate和modifiedDate。我希望hibernate在触发相应的查询时自动为这些java.lang.Long类型的字段生成值。

我正在尝试使用@CreationTimestamp(org.hibernate.annotations.CreationTimestamp)但春天抱怨以下 -

  

调用init方法失败;嵌套异常是org.hibernate.HibernateException:生成器注释的不支持的属性类型@CreationTimestamp

我也尝试了@Temporal,但这不适用于Long类型的字段。我不想将日期存储在java.util.Date类型中。

请帮忙。

1 个答案:

答案 0 :(得分:0)

如果您使用的是JPA,可以这样做

private Long createdDate;
private Long updatedDate;

@PrePersist
protected void onCreate() {
    createdDate = System.currentTimeMillis();
    updatedDate = System.currentTimeMillis();
}

@PreUpdate
protected void onUpdate() {
    updatedDate = System.currentTimeMillis();
}

说完为什么你不想让updateDate成为Date ???我会考虑把它变成一个日期而不是长日。

请参阅Creation timestamp and last update timestamp with Hibernate and MySQL