tutorial example java hibernate

java - example - ¿Cuál es el uso de la anotación @Temporal en Hibernate?



hibernate spring (4)

La documentación de Hibernate tiene la siguiente información para la anotación @Temporal :

En las API 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 una precisión de DATE, TIME o TIMESTAMP (es decir, la fecha real, solo la hora o ambas). Usa la anotación @Temporal para afinar eso.

¿Qué significa temporal precision of time is not defined significa? ¿Qué son temporal datos temporal y su precisión? ¿Cómo lo sintoniza?


Esta anotación se debe especificar para los campos persistentes o las propiedades de tipo java.util.Date y java.util.Calendar . Solo se puede especificar para campos o propiedades de estos tipos.

La anotación Temporal se puede usar junto con la anotación Basic , la anotación Id o la anotación ElementCollection (cuando el valor de la colección de elementos es de ese tipo temporal).

En las API 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 una precisión de DATE, TIME o TIMESTAMP (es decir, la fecha real, solo la hora o ambas). Usa la anotación @Temporal para afinar 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 usted desea almacenar la fecha / hora precisa o ambos ( TIMESTAMP ) en la tabla de la base de datos.

La precisión temporal no está especificada en las API centrales de Java. @Temporal es una anotación JPA que se convierte de ida y vuelta entre timestamp y java.util.Date . También convierte time-stamp tiempo en tiempo. Por ejemplo, en el siguiente fragmento, @Temporal(TemporalType.DATE) descarta el valor del tiempo y solo conserva la fecha .

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

Según javadocs,

Anotación para declarar un {@code TemporalType} apropiado en los parámetros del método de consulta. Tenga en cuenta que esta anotación solo se puede usar en parámetros del tipo {@link Date} con TemporalType.DATE predeterminado

[Información anterior recopilada de diversas fuentes]


Los tipos temporales son el conjunto de tipos basados ​​en el tiempo que se pueden usar en las asignaciones de estado persistentes.

La lista de tipos temporales compatibles incluye los tres tipos java.sql.Date , java.sql.Time y java.sql.Timestamp , e incluye los dos tipos java.util.Date y java.util.Calendar .

Los tipos java.sql son completamente sencillos. Actúan como cualquier otro tipo de mapeo simple y no necesitan ninguna consideración especial.

Sin embargo, los dos tipos de java.util necesitan metadatos adicionales para indicar cuál de los tipos de JDBC java.sql debe utilizar al comunicarse con el controlador JDBC. Esto se hace @Temporal con la anotación @Temporal y especificando el tipo JDBC como un valor del tipo enumerado TemporalType .

Hay tres valores enumerados de DATE, TIME y TIMESTAMP para representar cada uno de los tipos java.sql .


utilizar esta

@Temporal(TemporalType.TIMESTAMP) @Column(name="create_date") private Calendar createDate; public Calendar getCreateDate() { return createDate; } public void setCreateDate(Calendar createDate) { this.createDate = createDate; }


@Temporal es una anotación JPA que se puede usar para almacenar solo TIME ( java.sql.Time ), DATE ( java.sql.Date ) o TIMESTAMP ( java.sql.Timestamp ) en la tabla de la base de datos. Generalmente cuando declaramos un campo de Fecha en la clase e intentamos almacenarlo. Almacenará la marca de tiempo en la base de datos.

private Date joinedDate;

el valor almacenado se ve como 08-07-17 04: 33: 35.870000000 PM

Si queremos almacenar solo la fecha en la base de datos, podemos usar esta anotación con el atributo DATE.

@Temporal(TemporalType.DATE) private Date joinedDate;

Esta vez, almacenaría 08-07-17 en la base de datos

También hay otros atributos de @Temporal que se pueden usar en función del requisito.