简单实用方式处理:No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer
引起改错误的原因是:@ManyToOne(fetch = FetchType.LAZY)
hibernate框架会给每个被管理对象时会新加属性,在再懒加载的时候,而这些属性又没有实现序列化功能,所以包此类错误!
第一种解决方案:
放弃懒加载,此方法最简单直接有效。@ManyToOne()
第二种方案:
在持久化类上加注解,提示 hibernate框架忽略代理对象中的未序列化属性
@JsonIgnoreProperties(value={“hibernateLazyInitializer”,“handler”,“fieldHandler”})
第三种方案:
自定义映射,解决Serializa的问题,配置SpringMVC不用其它处理即可运行
1、第一步定义类继承ObjectMapper 重写CustomMapper();
public class CustomMapper extends ObjectMapper {
public CustomMapper() {
this.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 设置 SerializationFeature.FAIL_ON_EMPTY_BEANS 为 false
this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
}
}
2、Spring MVC 配置
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8</value>
<value>application/x-www-form-urlencoded; charset=UTF-8</value>
</list>
</property>
<!-- No serializer:配置 objectMapper 为我们自定义扩展后的 CustomMapper,解决了返回对象有关系对象的报错问题 -->
<property name="objectMapper">
<bean class="cn.itsource.aisell.common.CustomMapper"></bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
3、运行代码吧!!