我们最近从 Wildfly 11 迁移到 Wildfly 15,从 Java 8 迁移到 Java 11,并注意到 Jackson 序列化 Date 对象的方式发生了变化。我们使用 Jackson v2.9.8 进行对象序列化,使用 Spring v5.0.9。
在升级之前,日期对象将以 ISO 格式序列化,例如“2019-11-12”,但升级后,日期字段开始显示为时间戳,例如“1573516800000”。之前有其他人遇到过这个问题吗?这可以在 standalone.xml
中配置吗?
Wildfly 11 示例
Wildfly 15 示例
MySQL中该字段配置为DATE
示例实体
public class Entity implements java.io.Serializable {
@Id
@Column(name = "id")
private Integer id;
@Column(name = "value_date")
private java.sql.Date valueDate;
public java.sql.Date getValueDate() {
return valueDate;
}
public void setValueDate(java.sql.Date valueDate) {
this.valueDate = valueDate;
}
}
编辑:
- 我们尝试将
java.sql.Date
更改为java.util.Date
,但没有成功
最佳答案
虽然我无法确定您当前的设置/配置,但如果您配置 ObjectMapper
,您可能会得到预期的行为:
@Bean
@Primary
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.build();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
return objectMapper;
}
关于java - 从 Wildfly 11 升级到 Wildfly 15 时出现日期序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56527367/