En Spring Boot, al trabajar con bases de datos mediante JPA/Hibernate, es posible definir una columna de tipo date
sin hora utilizando la anotación @Temporal
. Esta anotación permite especificar el formato temporal que queremos usar para una columna en la base de datos, en este caso, únicamente la fecha (sin incluir la hora).
date
sin hora en JPA
Para definir un campo de tipo date
sin hora en una entidad JPA en Spring Boot, puedes usar la anotación @Temporal
con el valor TemporalType.DATE
. Esto asegurará que se almacene solo la fecha sin la hora.
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.util.Date;
@Entity
public class MiEntidad {
@Id
private Long id;
@Temporal(TemporalType.DATE)
private Date fechaNacimiento;
// Getters y setters
}
En este ejemplo:
@Temporal(TemporalType.DATE)
para indicar que solo se almacenará la fecha (sin la hora) en la columna fechaNacimiento
.
LocalDate
(Java 8 y superior)
Con las versiones modernas de Java, se puede usar el tipo LocalDate
en lugar de Date
para almacenar fechas sin horas. Esto es más recomendado, ya que LocalDate
es parte de la nueva API de tiempo de Java.
import javax.persistence.Entity;
import javax.persistence.Id;
import java.time.LocalDate;
@Entity
public class MiEntidad {
@Id
private Long id;
private LocalDate fechaNacimiento;
// Getters y setters
}
Este enfoque no requiere la anotación @Temporal
, ya que LocalDate
está diseñado específicamente para almacenar solo la fecha sin la hora.
En bases de datos como MySQL, la columna correspondiente se crea con el tipo DATE
cuando se usa TemporalType.DATE
o LocalDate
.
Para más información, puedes consultar la documentación oficial de Spring Boot.
Jorge García
Fullstack developer