在Hibernate中@Temporal注释有什么用?

2022-08-31 08:27:25

休眠文档包含以下注释信息:@Temporal

在普通的 Java API 中,没有定义时间的时间精度。处理时态数据时,可能需要描述数据库中的预期精度。时态数据可以具有日期、时间或时间戳精度(即实际日期、仅时间或两者)。使用@Temporal注释对其进行微调。

这是什么意思?什么是数据及其精度?它是如何微调的?temporal precision of time is not definedtemporal


答案 1

必须为持久性字段或类型为 和 的属性指定此注释。只能为这些类型的字段或属性指定它。java.util.Datejava.util.Calendar

注释可以与注释、注释或注释结合使用(当元素集合值为此类时间类型时)。TemporalBasicIdElementCollection

在普通的 Java API 中,没有定义时间的时间精度。处理时态数据时,可能需要描述数据库中的预期精度。时态数据可以具有日期、时间或时间戳精度(即,实际日期、仅时间或两者)。使用注释对其进行微调。@Temporal

时态数据是与时间相关的数据。例如,在内容管理系统中,文章的创建日期和上次更新日期是时态数据。在某些情况下,时态数据需要精度,并且您希望在数据库表中存储精确的日期/时间或两者 ()。TIMESTAMP

核心 Java API 中未指定时间精度。 是在时间戳和 之间来回转换的批注。它也转化为时间。例如,在下面的代码段中,删除时间值并仅保留日期@TemporalJPAjava.util.Datetime-stamp@Temporal(TemporalType.DATE)

@Temporal(TemporalType.DATE)
private java.util.Date creationDate;

根据javadocs,

用于在查询方法参数上声明适当的 {@code TemporalType} 的批注。请注意,此批注只能用于具有默认 TemporalType.DATE. DATE 的 {@link Date} 类型的参数

[以上信息从各种来源收集]


答案 2

@Temporal是一个 JPA 注释,可用于在数据库表中存储以下列项:

  1. 日期 (java.sql.Date)
  2. 时间 (java.sql.Time)
  3. 时间戳 (java.sql.Timestamp)

通常,当我们在类中声明一个字段并尝试存储它时。
它将作为时间戳存储在数据库中。Date

@Temporal
private Date joinedDate;

上面的代码将存储值看起来像 08-07-17 04:33:35.8700000000 PM

如果我们只想在数据库中存储DATE
我们可以使用/定义。TemporalType

@Temporal(TemporalType.DATE)
private Date joinedDate;

这一次,它将在数据库中存储08-07-17

还有其他一些属性,可以根据要求使用这些属性。@Temporal


推荐