Hibernate 中的@Temporal 注解有什么用?

新手上路,请多包涵

Hibernate 文档包含以下关于 @Temporal 注释的信息:

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

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

原文由 Chaitanya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 726
2 个回答

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

The Temporal annotation may be used in conjunction with the Basic annotation, the Id annotation, or the ElementCollection annotation (when the element collection value 就是这样一种时间类型。

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

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

核心 Java API 中未指定时间精度。 @Temporal 是一个 JPA 注释,在时间戳和 java.util.Date 之间来回转换。它还将 time-stamp 转换为时间。例如,在下面的代码段中, @Temporal(TemporalType.DATE) 删除时间值并仅保留日期

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

根据javadocs,

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

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

原文由 Ankur Singhal 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

通常当我们在类中声明一个 Date 字段并尝试存储它时。

它将作为 TIMESTAMP 存储在数据库中。

 @Temporal
private Date joinedDate;

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

如果我们只想在数据库中存储 日期

我们可以使用/定义 TemporalType

 @Temporal(TemporalType.DATE)
private Date joinedDate;

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

还有一些其他属性以及 @Temporal 可以根据需要使用。

原文由 Avikool91 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题