La documentación de Hibernate tiene la siguiente información para la @Temporal
anotación:
En las API de Java simples, la precisión temporal del tiempo no está definida. Al tratar con datos temporales, es posible que desee describir la precisión esperada en la base de datos. Los datos temporales pueden tener precisión DATE, TIME o TIMESTAMP (es decir, la fecha real, solo la hora o ambas). Use la anotación @Temporal para ajustar eso.
¿Qué temporal precision of time is not defined
significa? ¿Qué son los temporal
datos y su precisión? ¿Cómo se afina?
Respuestas:
Esta anotación debe especificarse para campos persistentes o propiedades de tipo
java.util.Date
yjava.util.Calendar
. Solo se puede especificar para campos o propiedades de este tipo.La
Temporal
anotación se puede utilizar junto con laBasic
anotación, laId
anotación o laElementCollection
anotación (cuando el valor de la colección de elementos es de ese tipo temporal.En las API de Java simples, la precisión temporal del tiempo no está definida. Cuando se trata de datos temporales, es posible que desee describir la precisión esperada en la base de datos. Los datos temporales pueden tener precisión DATE, TIME o TIMESTAMP (es decir, la fecha real, solo la hora o ambas). Use la
@Temporal
anotación para ajustar eso.Los datos temporales son los datos relacionados con el tiempo. Por ejemplo, en un sistema de gestión de contenido, la fecha de creación y la fecha de última actualización de un artículo son datos temporales. En algunos casos, los datos temporales necesitan precisión y desea almacenar la fecha / hora precisa o ambas (
TIMESTAMP
) en la tabla de la base de datos.La precisión temporal no se especifica en las API principales de Java.
@Temporal
es unaJPA
anotación que se convierte de un lado a otro entre la marca de tiempo yjava.util.Date
. También se conviertetime-stamp
en tiempo. Por ejemplo, en el fragmento siguiente,@Temporal(TemporalType.DATE)
elimina el valor de tiempo y solo conserva la fecha .Según javadocs,
[Información anterior recopilada de varias fuentes]
fuente
yyyy-MM-dd
02/10/2017
y quiero convertirlo a2017-10-02
o2017/10/02
@Temporal
es una anotación JPA que se puede utilizar para almacenar en la tabla de la base de datos uno de los siguientes elementos de columna:java.sql.Date
)java.sql.Time
)java.sql.Timestamp
)Generalmente cuando declaramos un
Date
campo en la clase e intentamos almacenarlo.Se almacenará como TIMESTAMP en la base de datos.
El código anterior almacenará el valor que se ve como 08-07-17 04: 33: 35.870000000 PM
Si queremos almacenar solo la FECHA en la base de datos,
podemos usar / definir
TemporalType
.Esta vez, almacenaría 08-07-17 en la base de datos
Hay algunos otros atributos, además de los
@Temporal
que se pueden utilizar según el requisito.fuente
Los tipos temporales son el conjunto de tipos basados en el tiempo que se pueden usar en asignaciones de estado persistentes.
La lista de tipos soportados temporales incluye los tres
java.sql
tiposjava.sql.Date
,java.sql.Time
yjava.sql.Timestamp
, e incluye los dosjava.util
tiposjava.util.Date
yjava.util.Calendar
.Los
java.sql
tipos son completamente sencillos. Actúan como cualquier otro tipo de mapeo simple y no necesitan ninguna consideración especial.java.util
Sin embargo, los dos tipos necesitan metadatos adicionales para indicar cuál de losjava.sql
tipos de JDBC se debe utilizar al comunicarse con el controlador JDBC. Esto se hace anotándolos con la@Temporal
anotación y especificando el tipo JDBC como un valor delTemporalType
tipo enumerado.Hay tres valores enumerados de DATE, TIME y TIMESTAMP para representar cada uno de los
java.sql
tipos.fuente
utilizar este
fuente
Si busca una respuesta corta:
En el caso de usar java.util.Date, Java realmente no sabe cómo relacionarse directamente con los tipos de SQL. Aquí es cuando
@Temporal
entra en juego. Se utiliza para especificar el tipo de SQL deseado.Fuente: Baeldung
fuente
Utilizo Hibernate 5.2 y
@Temporal
ya no es necesario.java.util.date , sql.date , time.LocalDate se almacenan en la base de datos con el tipo de datos apropiado como fecha / marca de tiempo.
fuente
Usamos la anotación @Temporal para insertar fecha, hora o ambas en la tabla de la base de datos. Usando TemporalType podemos insertar datos, hora o ambas int tabla.
fuente