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 中的单个实体字段。导致指定为非空的参数为空