如果我们想在Hibernate中存储Date,是否需要TemporalType = Timestamp?

时间:2017-04-13 04:26:49

标签: java hibernate hibernate-annotations

如果我们想将@Temporal存储在Hibernate中,是否有必要提供Date

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

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

如果没有给出@Temporal,那么默认值是什么?如果TemporalType.Timestamp给出了什么是好处?

1 个答案:

答案 0 :(得分:0)

@Temporal没有必要使用Date字段,默认情况下hibernate使用Timestamp保存日期,我们可以使用@Temporal注释来指定hibernate将保存日期,时间或时间戳的精度。在普通Java API中,未定义时间的时间精度。处理时态数据时,您可能希望描述数据库中的预期精度。 以下类型用于指示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.

     

这可能表示实际的日期表示形式   数据库未定义,并确保最好指定它   直接