Java Spring,在Hibernate中创建当前日期的注释?

Java Spring,在Hibernate中创建当前日期的注释?,java,spring,hibernate,annotations,Java,Spring,Hibernate,Annotations,在我的Spring应用程序中使用JPA Hibernate注释 在该mysql数据库中,有一个表和一个名为CreateDate 插入记录时将添加此列值 那么,它们是否有用于创建当前日期和时间的注释 在我们的HibernateBean编写setter方法中,添加 private Date currrent; public void setCurrent(Date current) { this.current = new Date(); } 我想你在找

在我的Spring应用程序中使用JPA Hibernate注释

在该mysql数据库中,有一个表和一个名为
CreateDate

插入记录时将添加此列值

那么,它们是否有用于创建当前日期和时间的注释

在我们的HibernateBean编写setter方法中,添加

    private Date currrent;
    public void setCurrent(Date current)
    {
      this.current = new Date();
    }

我想你在找这个:-

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "curr", length = 10)
public Date getCurrrent() {
    return this.currrent;
}

我想你在找这个:-

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "curr", length = 10)
public Date getCurrrent() {
    return this.currrent;
}

我认为最简单的方法是使用新日期()初始化字段:

恕我直言,我不建议更改setter方法的行为,其他开发人员不会期望这样


如果您希望在实体被持久化/更新之前立即填充此字段,则可以使用
@PrePersist
@PreUpdate
JPA注释定义一个方法来填充
当前的
属性。

我认为实现此目的最简单的方法是使用新日期初始化字段()

恕我直言,我不建议更改setter方法的行为,其他开发人员不会期望这样


如果您希望在实体被持久化/更新之前立即填充此字段,则可以使用
@PrePersist
@PreUpdate
JPA注释定义一个方法,以填充
当前的
属性。

Jelies提到的方法是正确的。只需使用

private Date currrent = new Date(); 
在对象创建期间,然后将其持久化

此外,如果您有机会将字段
current
与任何java.util.date对象进行比较,则使用
@Temporal(TemporalType.TIMESTAMP)
存储日期和时间是不安全的,因为保存的字段将作为java.sql.TIMESTAMP加载。原因已经提到

注意:此类型是java.util.Date和单独的纳秒值的组合。java.util.Date组件中只存储整数秒。分数秒-纳米-是分开的。当传递java.util.Date类型的值时,Timestamp.equals(Object)方法永远不会返回true,因为日期的nanos组件是未知的。因此,Timestamp.equals(对象)方法相对于java.util.Date.equals(对象)方法是不对称的。此外,hashcode方法使用底层java.util.Date实现,因此在其计算中不包括Nano。 由于Timestamp类和上面提到的java.util.Date类之间的差异,建议代码不要将时间戳值一般地作为java.util.Date的实例来查看。Timestamp和java.util.Date之间的继承关系实际上表示实现继承,而不是类型继承


解决方法是使用。本文将讨论此问题和解决方法。那里使用的代码对您来说已经足够好了。

Jelies提到的是正确的方法。只需使用

private Date currrent = new Date(); 
在对象创建期间,然后将其持久化

此外,如果您有机会将字段
current
与任何java.util.date对象进行比较,则使用
@Temporal(TemporalType.TIMESTAMP)
存储日期和时间是不安全的,因为保存的字段将作为java.sql.TIMESTAMP加载。原因已经提到

注意:此类型是java.util.Date和单独的纳秒值的组合。java.util.Date组件中只存储整数秒。分数秒-纳米-是分开的。当传递java.util.Date类型的值时,Timestamp.equals(Object)方法永远不会返回true,因为日期的nanos组件是未知的。因此,Timestamp.equals(对象)方法相对于java.util.Date.equals(对象)方法是不对称的。此外,hashcode方法使用底层java.util.Date实现,因此在其计算中不包括Nano。 由于Timestamp类和上面提到的java.util.Date类之间的差异,建议代码不要将时间戳值一般地作为java.util.Date的实例来查看。Timestamp和java.util.Date之间的继承关系实际上表示实现继承,而不是类型继承

解决方法是使用。本文将讨论此问题和解决方法。那里使用的代码对你来说已经足够好了