Spring 升级导致 JPA 日期字段以错误的格式序列化

Posted

技术标签:

【中文标题】Spring 升级导致 JPA 日期字段以错误的格式序列化【英文标题】:Spring upgrade causes JPA Date field to serialise in the wrong format 【发布时间】:2021-03-22 18:54:35 【问题描述】:

我有一个带有日期字段的实体,如下所示:

@Entity
public class Event 

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;
    
    @Column(name = "timestamp")
    private Date timestamp;

这个“时间戳”字段一直被序列化为从纪元开始的毫秒数(例如 1593779821000)。在 Spring Boot 升级之后,它现在由于某种原因返回一个日期字符串(例如“2020-12-09T07:52:06.000+00:00”)。我已经到处搜索了这个解释以及如何恢复正确的行为,但什么都没有。有谁知道需要什么注释来解决这个问题,或者为什么他们觉得首先需要改变它?

【问题讨论】:

根据baeldung.com/jackson-jsonformat毫秒时间戳是默认格式。显然不是。 【参考方案1】:

事实证明,所有在线信息都是错误的。

我发现十几个网站(自 2017 年起)声称 spring.jackson.serialization.write-dates-as-timestamps 默认为 true,但显然情况不再如此。

找不到此属性的任何官方文档。在任何更改日志或发行说明中均未提及此更改。希望我能说我很惊讶,但 Spring 一直在不告诉任何人的情况下引入应用程序重大更改。

【讨论】:

以上是关于Spring 升级导致 JPA 日期字段以错误的格式序列化的主要内容,如果未能解决你的问题,请参考以下文章