Tengo una proyección de datos de primavera que alinea algunos campos relacionales. Cuando se aplica la proyección, los campos de fecha y hora ya no se muestran como iso8601 (como si no tuvieran la proyección), sino que se muestran en otro formato.
¿Cómo hago que mi formato de proyección sea una fecha y hora como ISO8601? Aquí está mi proyección actualmente:
package io.cocept.model.projection; import io.cocept.model.Meeting; import io.cocept.model.User; import org.springframework.data.rest.core.config.Projection; import org.springframework.format.annotation.DateTimeFormat; @Projection(name = "inlineUsers", types = { Meeting.class }) public interface MeetingInlineUsersProjection { String getAddress(); String getDateTime(); String getMessage(); User getOwner(); User getInvitee(); }y mi clase de reunión:
package io.cocept.model; import javax.persistence.*; import javax.validation.constraints.NotNull; import java.util.Date; @Entity public class Meeting extends BaseEntity { private User owner; private User invitee; private String address; private Date dateTime; private String message; public Meeting() { } @ManyToOne @NotNull @JoinColumn(name = "owner_id") public User getOwner() { return owner; } public void setOwner(User owner) { this.owner = owner; } @ManyToOne @NotNull @JoinColumn(name = "invitee_id") public User getInvitee(){ return invitee; } public void setInvitee(User invitee){ this.invitee = invitee; } @NotNull public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @NotNull public Date getDateTime() { return dateTime; } public void setDateTime(Date dateTime) { this.dateTime = dateTime; } public String getMessage(){ return message; } public void setMessage(String message){ this.message = message; } } Intenté agregar el decorador @DateTimeFormat(pattern = "YYYY") a la propiedad getDateTime() pero no cambia el formato de fecha de salida.
¿Algunas ideas?
gracias max
Como señaló Jens Schauder en su comentario, accidentalmente configuré el tipo para getDateTime() en la proyección como String, en lugar de Date. Esto presumiblemente hizo una conversión implícita a String en un formato diferente al predeterminado de primavera (iso8601).
Cuando cambié la proyección de:
String getDateTime()a:
Date getDateTime()dio formato a la fecha como ISO8601 como el resto de la aplicación.
Pruebe @DateTimeFormat(pattern = "yyyy") en lugar de YYYY .