当前位置: 首页 > 知识库问答 >
问题:

Hibernate中@Temporal注释的用途是什么?

宓季同
2023-03-14

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

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

时间精度未定义是什么意思?什么是时间数据及其精度?它如何微调?

共有3个答案

边霄
2023-03-14

时态类型是可以在持久状态映射中使用的基于时间的类型集。

支持的时态类型列表包括三种java。sqltypesjava。sql。日期java。sql。时间和java。sql。时间戳,它包括两个java。utiltypesjava。util。日期java。util。日历

java。sql类型完全没有麻烦。它们的行为与任何其他简单映射类型一样,不需要任何特殊考虑。

两个java。然而,util类型需要额外的元数据来指示哪个JDBCjava。与JDBC驱动程序通信时要使用的sql类型。这是通过使用@Temporal注释对它们进行注释,并将JDBC类型指定为TemporalType枚举类型的值来实现的。

有三个枚举值DATE、TIME和TIMESTAMP来代表java中的每一个。sql类型。

吕俊才
2023-03-14

@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.870000000 PM

如果我们只想在数据库中存储日期,
我们可以使用/defineTemporalType

@Temporal(TemporalType.DATE)
private Date joinedDate;

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

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

邢杰
2023-03-14

必须为java类型的持久字段或属性指定此注释。util。日期java。util。日历。只能为这些类型的字段或属性指定。

临时注释可以与Basic注释、Id注释或ElementCollection注释结合使用(当元素集合值是这种时间类型时。

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

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

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

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

根据javadocs,

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

[以上信息来自不同来源]

 类似资料:
  • 问题内容: Hibernate文档具有以下有关注释的信息: 在纯Java API中,未定义时间的时间精度。处理时态数据时,您可能需要描述数据库中的预期精度。时间数据可以具有DATE,TIME或TIMESTAMP精度(即实际日期,仅时间或两者兼有)。使用@Temporal批注进行微调。 什么意思 什么是数据及其精度?如何调整? 问题答案: 必须为类型为和的持久字段或属性指定此注释。只能为这些类型的字

  • 问题内容: 我有2个实体,如“父对子”和“一对多”关系 因此,这里 @LazyCollection(LazyCollectionOption.EXTRA)的 用途是什么,它将何时出现在图片中,例如对哪个带有子列表的操作有好处? 问题答案: 为了给您一个提示,主要是出于性能方面的考虑,您可以开始阅读以下链接: 二级缓存 休眠文档

  • 问题内容: 如果我们使用 代替 如果我们使用不带注释的日期列属性,会有任何副作用吗? 问题答案: 我设法找到的只有一部分文档: 在纯Java API中, 未定义时间 的 时间精度 。处理时态数据时,您可能需要描述数据库中的预期精度。时间数据可以具有DATE,TIME或TIMESTAMP精度(即实际日期,仅时间或两者兼有)。使用@Temporal批注进行微调。 从2.2.2.1开始。声明基本属性映射

  • 问题内容: 使用这些批注的重点是要独立于数据库提供程序,而不是重新生成JAR存档。 如果我坚持不懈,那么我首先看不到使用hibernate的意义。如果确实决定切换到其他数据库提供程序,则必须修改类中的注释,然后重新编译应用程序。 问题答案: @Table 批注:@Table批注允许您指定用于将实体保留在数据库中的表的详细信息。 @Table批注提供了四个属性,使您可以覆盖表的名称,目录和架构,并对

  • 在我的项目代码库中,我看到许多地方使用了生成的注释。当我通读这些文件时,它说明了以下内容。 Lombok最终会自动将此注释添加到所有生成的构造函数、方法、字段和类型中。 根据文档,Lombok会自动为生成的代码添加注释。除此之外,不会生成任何像或这样的代码。我看不出使用它的理由。 我错过什么了吗?

  • 问题内容: 我有2个实体作为“一对多”的父子关系 因此,这里 @LazyCollection(LazyCollectionOption.EXTRA)的 用途是什么,它将何时出现在图片中,例如对哪个带有子列表的操作有好处? 问题答案: 为了给您一个提示,主要是出于性能方面的考虑,您可以开始阅读以下链接: 二级缓存 hibernate文档