如果要将@Temporal存储在Hibernate中,是否必须提供Date

@Column(name = "Date_Open")
@Temporal(TemporalType.TIMESTAMP)
public Date getDateOpen() {
  return this.dateOpen;
}


如果我们不使用TemporalType注释,默认的@Temporal是什么?

如果未提供@Temporal,则默认值是什么?如果通过TemporalType.Timestamp给出,默认值是什么?

最佳答案

@Temporal不必与Date字段一起使用,默认情况下,hibernate使用Timestamp保存日期。我们可以使用@Temporal批注指定hibernate保存日期,时间或时间戳的精度。在纯Java API中,未定义时间的时间精度。处理时间数据时,您可能需要描述数据库中的预期精度。
following Type用于指示java.util.Date的特定映射
或java.util.Calenda。

TemporalType.DATE: maps the date as java.sql.Date.
TemporalType.TIME: maps the date as java.sql.Time.
TemporalType.TIMESTAMP: maps the date as java.sql.Timestamp.


Here是有关@temporal的很好的解释

同样关于日期字段中缺少@Temporal注释:


  在纯Java API中,未定义时间的时间精度。
  处理时间数据时,您可能需要描述
  数据库的预期精度。时间数据可以具有DATE,TIME或
  TIMESTAMP精度(即实际日期,仅时间或两者兼有)。采用
  @Temporal批注进行微调。
  
  From 2.2.2.1. Declaring basic property mappings.
  
  这可能表明实际日期表示在
  未定义数据库,请确保最好指定它
  直。

10-06 05:00