Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Hibernate插入新记录后,两个日期列中的时间不同_Hibernate_Datetime_Timestamp_Generated - Fatal编程技术网

使用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拦截器。看