mybatis关联查询,发送额外sql时,出现的bug及解决分析(SSM项目)

进行关联查询,发送额外sql时,报错如下:

org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mvc] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl]; nested exception is 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 (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->cn.czw.trip.core.domain.Destination_$$_jvst598_0["children"]->java.util.ArrayList[0]->cn.czw.trip.core.domain.Destination_$$_jvst598_0["handler"])] with root cause

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 (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->cn.czw.trip.core.domain.Destination_$$_jvst598_0["children"]->java.util.ArrayList[0]->cn.czw.trip.core.domain.Destination_$$_jvst598_0["handler"])

at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)

通过分析报错信息,发现使用mybatis的延时加载功能时,对应实体类会被mybatis动态代理,代理之后会在动态代理类加多handler字段(属性),无法转为json

解决方案:1.关闭mybatis延时加载功(懒加载)2.在实体类上贴注解@JsonIgnoreProperties("handler"),忽略掉handler字段

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值