最近在搬砖的时候发现有一个
No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
的错误,百思不得其解,根据反馈来看并不是我的代码的逻辑问题,而是hibernate的配置问题,经过查阅发现
hibernate会给每个被管理的对象加上hibernateLazyInitializer属性,同时struts-jsonplugin或者其他的jsonplugin都是因为jsonplugin用的是java的内审机制.hibernate会给被管理的pojo加入一个hibernateLazyInitializer属性,jsonplugin通过java的反射机制将pojo转换成json,会把hibernateLazyInitializer也拿出来操作,但是hibernateLazyInitializer无法由反射得到,所以就抛异常了。
解决办法:
方法一:
对pojo类加
@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
的注释
方法二:
在配置文件里加:
spring:
jackson:
serialization:
fail-on-empty-beans: false