首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Wildfly 11升级到Wildfly 15时的日期序列化问题

从Wildfly 11升级到Wildfly 15时的日期序列化问题
EN

Stack Overflow用户
提问于 2019-06-10 13:26:29
回答 3查看 713关注 0票数 3

最近,我们从Wildfly 11迁移到Wildfly 15,从Java 8迁移到Java 11,并注意到Jackson序列化Date对象的方式发生了变化。我们使用Jackson v2.9.8进行对象序列化,使用SpringV5.0.9。

在升级之前,日期对象将以ISO格式序列化,例如"2019-11-12“,但在升级之后,日期字段开始显示为时间戳,例如”1573516800000“。是否还有其他人遇到过此问题?这是否可以在standalone.xml中配置?

野生蝇11例

野生蝇15例

该字段在MySQL中配置为日期。

示例实体

代码语言:javascript
复制
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,但这没有起作用。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-10 15:02:31

虽然我不能确定您当前的设置/配置,但是如果您配置了您的ObjectMapper,您可能会得到预期的行为:

代码语言:javascript
复制
@Bean
@Primary
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    ObjectMapper objectMapper = builder.build();
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    return objectMapper;
}
票数 4
EN

Stack Overflow用户

发布于 2019-06-10 14:01:10

我不知道为什么会这样,但是我会将字段的类型更改为java.util.Date,然后使用@Temporal注释。

必须为java.util.Datejava.util.Calendar类型的持久字段或属性指定此注释。它只能为这些类型的字段或属性指定。

根据文件:

时态数据可以具有日期、时间或时间戳精度(即实际日期,仅为时间,或两者兼备)。使用@Temporal注释对其进行微调。

然后,Rest库将处理Java和ISO之间的转换。如何配置取决于您正在使用的JSON序列化程序,它是Jackson中日期的默认格式

票数 3
EN

Stack Overflow用户

发布于 2019-06-11 13:03:20

在将Wildfly应用程序服务器从11升级到15,以及Java从8升级到11之后,我们就遇到了这个问题。

基于@Sofo Gial的可接受的answer,下面的方法适用于我们使用Spring5.0.9.RELEASE/ JDK 11 / Wildfly 15。

1)创建一个CustomObjectMapper.java

代码语言:javascript
复制
package com.mobizio.rest.spring;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class CustomObjectMapper extends ObjectMapper {

    public CustomObjectMapper() {
        super();
        configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    }

}

2)在上下文bean配置XML文件中,在<mvc:message-converters>标记之间添加一个<mvc:annotation-driven>条目,并创建CustomObjectMapper的bean

代码语言:javascript
复制
<mvc:annotation-driven>
...
<mvc:message-converters>
    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="objectMapper" ref="jacksonObjectMapper" />
    </bean>
</mvc:message-converters>
...
</mvc:annotation-driven>

<bean id="jacksonObjectMapper" class="com.mobizio.rest.spring.CustomObjectMapper" />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56527367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档