使用Hibernate插入新记录后,两个日期列中的时间不同
我有两列包含日期的实体:使用Hibernate插入新记录后,两个日期列中的时间不同,hibernate,datetime,timestamp,generated,Hibernate,Datetime,Timestamp,Generated,我有两列包含日期的实体: @Entity @Table public class Document { @DateTimeFormat(pattern = DateUtils.DD_MM_YYYY_HH_MM) Generated(value = GenerationTime.INSERT) @Column(nullable = false, name = "created_datetime") private Timestamp createdDateTime;
@Entity
@Table
public class Document {
@DateTimeFormat(pattern = DateUtils.DD_MM_YYYY_HH_MM)
Generated(value = GenerationTime.INSERT)
@Column(nullable = false, name = "created_datetime")
private Timestamp createdDateTime;
@DateTimeFormat(pattern = DateUtils.DD_MM_YYYY_HH_MM)
@Generated(value = GenerationTime.ALWAYS)
@Column(name = "last_updated_datetime")
private Timestamp lastUpdatedDateTime;
//....
}
当我保存新文档对象时,数据库中的这两列具有相同的时间。但有时它们有不同的时间,大约10…200毫秒。我不明白为什么。当Hibernate遇到每个单独的字段时,它会为这些字段生成新的时间戳实例,这可能发生在几微秒之间。这并不意外,这些字段之间会有一些变化,尽管200毫秒是很多 如果这是一个需要解决的问题,则可以执行以下操作之一,而不是使用@Generated注释: 创建一个Hibernate拦截器,用于查找这些字段,如果找到,则将相同的时间戳实例分配给“createdDatetime”和“LastUpdateDateTime”onSave,或者仅为“LastUpdateDateTime”onFlushDirty生成新的时间戳。看 与上述类似,使用JPA回调@PrePersist和@PreUpdate代替Hibernate拦截器。看