Что такое использование аннотации @Temporal в Hibernate?
в документации Hibernate есть информация ниже для @Temporal
аннотация:
в простых API Java временная точность времени не определена. При работе с временными данными вы можете описать ожидаемая точность в базе данных. Временные данные могут содержать дату, время или Точность метки времени (т. е. фактическая дата, только время или оба). Использовать аннотация @Temporal для точной настройки.
что значит temporal precision of time is not defined
в смысле? Что такое temporal
данные и их точность? Как он настраивается?
4 ответов
эта аннотация должна быть указана для постоянных полей или свойств типа java.util.Date
и java.util.Calendar
. Он может быть указан только для полей или свойств этих типов.
на Temporal
аннотация может использоваться в сочетании с Basic
аннотации Id
аннотации, или ElementCollection
аннотация (когда значение коллекции элементов имеет такой временной тип.
в простых API Java временная точность времени не определена. При работе с временные данные, вы можете описать ожидаемую точность в базе данных. Временные данные могут иметь точность даты, времени или метки времени (т. е. фактическую дату, только время или оба). Используйте @Temporal
аннотация для точной настройки.
временные данные-это данные, связанные со временем. Например, в системе управления контентом дата создания и дата последнего обновления статьи являются временными данными. В некоторых случаях временные данные требуют точности, и вы хотите сохранить точность дата / время или оба (TIMESTAMP
) в таблице базы данных.
временная точность не указана в основных API Java. @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
[информация, собранная из различных источников]
@Temporal
является аннотацией JPA, которая может использоваться только для хранения времени (java.sql.Time
),дата(java.sql.Date
) или метка (java.sql.Timestamp
) в таблице базы данных. Обычно, когда мы объявляем поле даты в классе и пытаемся сохранить его. Он будет хранить метку времени в базе данных.
private Date joinedDate;
сохраненное значение выглядит как 08-07-17 04:33: 35.870000000 PM
если мы хотим сохранить только дату в база данных, мы можем использовать эту аннотацию с атрибутом DATE.
@Temporal(TemporalType.DATE)
private Date joinedDate;
на этот раз он будет хранить 08-07-17 в базе
есть некоторые другие атрибуты, а также @Temporal
которое можно использовать основало на требовании.
временные типы-это набор временных типов, которые могут использоваться в сопоставлениях постоянных состояний.
список поддерживаемых временных типов включает в себя три java.sql
типы java.sql.Date
, java.sql.Time
и java.sql.Timestamp
, и она включает в себя два java.util
типы java.util.Date
и java.util.Calendar
.
на java.sql
типы полностью без проблем. Они действуют так же, как и любой другой простой тип отображения и не нуждаются в особом рассмотрении.
два java.util
типы однако дополнительные метаданные указывают, какой из JDBC java.sql
типы для использования при общении с драйвером JDBC. Это делается путем аннотирования их с помощью @Temporal
аннотация и указание типа JDBC в качестве значения TemporalType
перечислимый тип.
существует три перечисленных значения даты, времени и метки времени для представления каждого из java.sql
типы.
использовать
@Temporal(TemporalType.TIMESTAMP)
@Column(name="create_date")
private Calendar createDate;
public Calendar getCreateDate() {
return createDate;
}
public void setCreateDate(Calendar createDate) {
this.createDate = createDate;
}