Spring.jackson.date-Format属性无法正常使用@Temporal注释的日期序列化



我在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 }

这是最初创建伤害对象的类:

@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中日期属性的实际表示?

尝试这个:

 @Temporal(TemporalType.DATE)
 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
 @Column(name="INJURY_DATE")
 private Date injuryDate;

最新更新