今天在做自己的SpringBoot项目时,改完代码后登录突然发现报错如下:
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl and no properties discovered to create BeanSerializer
巴拉巴拉一大堆,总之意思就是jackson对某些属性没法序列化,而之前数据都是一样的,也没出现这个问题,那是什么原因导致的?
产生原因:
产生这个问题的原因就是为了实现
mybatis
级联查询懒加载,添加了如下配置:
# MyBatis mybatis: # 配置全局懒加载 configuration: lazy-loading-enabled: true aggressive-lazy-loading: false
然后就出现了如上问题。
解决办法:
1)方法1:这个解决办法很简单,就是在
application.yml
中新增配置如下:
spring: jackson: serialization: FAIL_ON_EMPTY_BEANS: false
如果是application.properties
文件就新增如下:
spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
然后再去运行,发现问题就解决了。
2)方法2:就是在相关实体类上加上如下注解即可:
@JsonIgnoreProperties(value = { "handler" })
但总体而言,潘老师还是认为第一种方法更好,更简洁方便!