0
使用Hibernate/Envers,如何:如何爲Hibernate Envers修訂信息保存UTC(而不是本地)時間戳?
- 保存UTC(而不是局部)時間戳休眠Envers修訂信息?
- 將時間戳記作爲LocalDateTime(Java 8)?
使用Hibernate/Envers,如何:如何爲Hibernate Envers修訂信息保存UTC(而不是本地)時間戳?
1)從修訂監聽器中,調用fixTimezone
修訂版的方法,如下所示。
2)將其作爲LocalDateTime
使用getRevisionDate
方法,如下所示。
public class MyRevisionListener
implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
MyRevision revision = (MyRevision)revisionEntity;
revision.fixTimezone();
}
}
@Entity
@RevisionEntity (MyRevisionListener.class)
public class MyRevision
implements Serializable {
@Id
@GeneratedValue
@RevisionNumber
private long id;
@RevisionTimestamp
@Temporal (TemporalType.TIMESTAMP)
@Column (nullable = false)
private Date date;
private static final ZoneId ZONE_ID_UTC = ZoneId.of("UTC");
public void fixTimezone() {
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZONE_ID_UTC);
date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
@NotNull
public LocalDateTime getRevisionDate() {
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}
...
}
相關休眠問題: