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 日期字段以错误的格式序列化的主要内容,如果未能解决你的问题,请参考以下文章

从父类更新日期字段在 Spring Data Jpa 中不起作用

Spring Boot JPA Hibernate - 以毫秒精度存储日期

MySQL 视图中 LONGTEXT 字段的 JPA 本机查询导致错误

指定为非空的参数为空:无法更新 Spring Boot jpa 中的单个实体字段。导致指定为非空的参数为空

Spring boot jpa/hibernate 遇到列类型错误(json字段)

Hibernate/JPA - 使用@Future 更新还包含日期字段的实体字段