hibernate中@temporal注解的用途是什么?

ru9i0ody  于 2021-07-11  发布在  Java
关注(0)|答案(7)|浏览(308)

hibernate文档包含以下信息 @Temporal 注解:
在普通的javaapi中,时间的时间精度没有定义。在处理时态数据时,可能需要描述数据库中预期的精度。时态数据可以具有日期、时间或时间戳精度(即实际日期、仅时间或两者)。使用@temporal注解对其进行微调。
是什么 temporal precision of time is not defined 什么意思?是什么 temporal 数据及其精度?它如何微调?

km0tfn4u

km0tfn4u1#

必须为类型为的永久字段或属性指定此注解 java.util.Date 以及 java.util.Calendar . 只能为这些类型的字段或属性指定。
这个 Temporal 注解可与 Basic 注解 Id 注解,或 ElementCollection 注解(当元素集合值是这种时态类型时)。
在普通的javaapi中,时间的时间精度没有定义。在处理时态数据时,可能需要描述数据库中预期的精度。时态数据可以具有日期、时间或时间戳精度(即,实际日期、仅时间或两者)。使用 @Temporal 对它进行微调。
时态数据是与时间有关的数据。例如,在内容管理系统中,文章的创建日期和最后更新日期是时态数据。在某些情况下,时态数据需要精确性,您希望存储精确的日期/时间或两者兼而有之( TIMESTAMP )在数据库表中。
在核心javaapi中没有指定时间精度。 @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 [以上信息来自各种渠道]

5n0oy7gb

5n0oy7gb2#

@Temporal 是一个jpa注解,可用于在数据库表中存储以下列项之一:
日期( java.sql.Date )
时间( java.sql.Time )
时间戳( java.sql.Timestamp )
通常当我们宣布 Date 字段并尝试存储它。
它将作为时间戳存储在数据库中。

@Temporal
private Date joinedDate;

上面的代码将存储值看起来像08-07-17 04:33:35.870000000pm
如果我们只想在数据库中存储日期,
我们可以使用/定义 TemporalType .

@Temporal(TemporalType.DATE)
private Date joinedDate;

这次,它将08-07-17存储在数据库中
还有其他一些属性 @Temporal 可根据需要使用。

tvokkenx

tvokkenx3#

时态类型是可以在持久状态Map中使用的基于时间的类型集。
支持的时态类型列表包括 java.sql 类型 java.sql.Date , java.sql.Time ,和 java.sql.Timestamp ,它包括 java.util 类型 java.util.Date 以及 java.util.Calendar .
这个 java.sql 类型完全没有麻烦。它们的行为就像任何其他简单的Map类型,不需要任何特殊的考虑。
两个 java.util 但是,类型需要额外的元数据来指示哪些是jdbc java.sql 与jdbc驱动程序通信时要使用的类型。这是通过用 @Temporal 注解并将jdbc类型指定为 TemporalType 枚举类型。
有三个枚举值date、time和timestamp来表示每个 java.sql 类型。

eivgtgni

eivgtgni4#

用这个

@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_date")
private Calendar createDate;

public Calendar getCreateDate() {
    return createDate;
}

public void setCreateDate(Calendar createDate) {
    this.createDate = createDate;
}
gv8xihay

gv8xihay5#

如果您正在寻找简短的答案:
在使用java.util.date的情况下,java实际上不知道如何与sql类型直接相关。这是什么时候 @Temporal 开始发挥作用。它用于指定所需的sql类型。
来源:baeldung

68bkxrlz

68bkxrlz6#

我使用Hibernate5.2和 @Temporal 不再需要了。
java.util.date、sql.date、time.localdate以适当的数据类型作为日期/时间戳存储到数据库中。

gab6jxml

gab6jxml7#

我们使用@temporal注解在数据库表中插入日期、时间或两者。使用temporaltype我们可以在int表中插入数据、时间或两者。

@Temporal(TemporalType.DATE) // insert date
@Temporal(TemporalType.TIME) // insert time
@Temporal(TemporalType.TIMESTAMP) // insert  both time and date.

相关问题