Свойство spring.jackson.date-format не работает должным образом для сериализации даты с аннотацией @Temporal - PullRequest
0 голосов
/ 23 июня 2019

У меня есть следующее свойство в файле application.properties:

spring.jackson.date-format=yyyy-MMM-dd

Есть определение объекта для сериализации:

public class InjuryDTO {

private Long id;

private String kindOfInjury;

private String muscle;

private String side;

private Integer outOfTraining;

private Date injuryDate;

private Long athleteId;

// getters and setters are omitted for brevity }

Это класс, из которого изначально создается объект InjuryDTO:

@Entity
@Table(name = "INJURY")
public class Injury {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "INJURY_ID")
private Long id;

@Column(name = "KIND_OF_INJURY")
private String kindOfInjury;

@Column(name = "MUSCLE")
private String muscle;

@Column(name = "SIDE")
private String side;

@Column(name = "OUT_OF_TRAINING")
private Integer outOfTraining;

@Temporal(value = TemporalType.DATE)
@Column(name = "INJURY_DATE")
private Date injuryDate;

@ManyToOne
@JoinColumn(name = "ATHLETE_ID")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private Athlete athlete;

// get,set-ters are removed for brevity 
}

Итак, если происходит десериализация этого свойства JSON:

"injuryDate":"2018-Jun-02"

Джексон принимает эту строку и преобразует ее в соответствующий объект java.util.Date, но при сериализациипроисходит без комментированной @Temporal(value = TemporalType.DATE) аннотации, после чего сервер возвращает следующее свойство JSON: "injuryDate":"2018-06-02".

Вопрос: : почему аннотация @Temporal влияет на фактическое представление свойства даты в JSON

1 Ответ

0 голосов
/ 23 июня 2019

Попробуйте это:

 @Temporal(TemporalType.DATE)
 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
 @Column(name="INJURY_DATE")
 private Date injuryDate;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...