自动生成时间戳

3

在创建新记录时,我需要自动生成时间戳,并在更新记录时自动生成修改时间戳。

有人可以告诉我如何实现吗?我正在使用openJPA。

提前感谢。

2个回答

4
你可以使用以下代码:
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;

@Column
@Temporal(TemporalType.TIMESTAMP)
private Date lastModificationDate;

// getters, setters

@PrePersist
void updateDates() {
  if (creationDate == null) {
    creationDate = new Date();
  }
  lastModificationDate = new Date();
}

你不应该也包含 @PreUpdate 吗?还是说更新操作也会在 @PrePersist 上运行? - Shervin Asgari

2

最简单的方法是使用@Version注解(文档在此

只需将以下内容添加到您的实体中:

@Version
private java.sql.Timestamp myTimestamp;

/// normal getters & setters here

它将自动完成此操作。


@Version 仅用于更新 - 创建日期将会丢失。 - David Rabinowitz
我99%确定它也用于创建 - 否则它如何进行第一次更新?你有任何参考资料表明@Version在创建时不会被更新吗? - Gregory Mostizky
@Version不是与锁定一起使用的吗?如果您不想使用锁定,只想要时间戳怎么办? - Shervin Asgari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接