No serializer found for class dm.jdbc.a.a.a and no properties discovered to create BeanSerializer 达梦

序列化问题

  • 错误原因
  • 解决方案
      • 一、修改yml配置
      • 二、修改实体类的get()、set()
      • 三、自定义 HttpMessageConverter

错误原因

"Type definition error: [simple type, class dm.jdbc.a.a.a]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class dm.jdbc.a.a.a and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.aoip.common.core.util.R[\"data\"]->java.util.HashMap[\"list\"]->java.util.LinkedList[0]->java.util.HashMap[\"resource\"]->dm.jdbc.driver.DmdbNClob[\"connection\"]->dm.jdbc.driver.DmdbConnection[\"dbAccess\"]->dm.jdbc.a.a[\"b\"])"

以上是我完整的报错信息,原因其实很简单,就是因为Jackson在序列化的时候无法对值进行读写了,导致了这个问题。

解决方案

网上有几种解决方案我都试过,不适用于我这个问题,因为我这里报错的类是达梦数据库driver.jar里面的,自己是没办法去增加或者修改public get()、set(),不过我还是先给予我试过的方案,可能你适用呢!!!!

一、修改yml配置

spring:
  jackson: 
    serialization: 
        FAIL_ON_EMPTY_BEANS: false # 关闭

二、修改实体类的get()、set()


    private Integer id;

    public Integer getId(){return id;}

    public void setId(Integer id) { this.id = id;}

三、自定义 HttpMessageConverter

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
        converters.add(0, converter);
    }
    
}

你可能感兴趣的:(bug,java,开发语言)