Disable SerializationFeature.FAIL_ON_EMPTY_BEANS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/J080624/article/details/82529082

SpringBoot2.X整合JPA/Hibernate过程中出现的问题,如下所示:

No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer 
and no properties discovered to create BeanSerializer 
(to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) 

问题背景为使用jackjson将对象json化的时候出现的错误。


解决办法一

在实体类上面加上注解:

@JsonIgnoreProperties(value = {"handler","hibernateLazyInitializer","fieldHandler"})

这里写图片描述


解决办法二

注册一个objectMapper覆盖掉默认的,这样就不用在每个类上面使用@JsonIgnoreProperties

@Bean
public ObjectMapper objectMapper() {
     return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
}

// ObjectMapper为com.fasterxml.jackson.databind.ObjectMapper;

测试结果如下:

这里写图片描述

对比解决方法一,在解析单个对象时返回的json中多了两个字段handler和hibernateLazyInitializer。


解决方法三

不使用SpringBoot默认的jackson进行对象json化,手动使用其他json框架如fastJSON进行json化然后返回。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

解决方法四

参考博文:Jackson注册Hibernate4Module模块

不过我未测试成功。

猜你喜欢

转载自blog.csdn.net/J080624/article/details/82529082