当前位置: 首页 > news >正文

mybitis懒加载Could not write JSON:No serializer...

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

spring mvc(spring boot) 整合Mybatis且开启懒加载,直接返回对象就会出现

Could not write JSON: 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); nested exception is com.fasterxml.jackson.databind.JsonMappingException: 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: com.xfishtour.entity.result2.JsonResult[\"data\"]->java.util.ArrayList[0]->com.xxx.xxxx_$$_jvstc2b_0[\"handler\"])

 

 

除了关闭全局懒加载外,解决办法有3个

 

1.关闭该查询的懒加载 fetchType="eager"

<collection ...  fetchType="eager">
</collection>

 

2.返回的类加上注解

@JsonIgnoreProperties(value = { "handler" })

 

3.配置json转换器属性SerializationFeature.FAIL_ON_EMPTY_BEANS为false

该方法从:https://blog.csdn.net/justinytsoft/article/details/53575236得知

 

以spring boot为例:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        ObjectMapper objectMapper = new ObjectMapper();

        //null字段不返回
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        // mybatis 使用懒加载后,返回JSON报错
        // 而且这个配置不能放在“null字段不返回”配置前面,否则"null字段不返回"配置会失效
        // @see <a href="https://blog.csdn.net/justinytsoft/article/details/53575236"></a>
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        jackson2HttpMessageConverter.setObjectMapper(objectMapper);
        converters.add(jackson2HttpMessageConverter);
    }
}

 

 

第3种方法应该是比较完美的了。但是返回前端的时候,对象会多出一个字段handler:"",反正不影响了。若是想去掉这个东西,第2、3种方法一起用即可

转载于:https://my.oschina.net/yejunxi/blog/1836329

相关文章:

  • srand rand
  • 简析gRPC client 连接管理
  • Java应用性能调优
  • BOM和DOM
  • Linux top命令的用法详细详解
  • StringUtils中常用方法leftPad(),rightPad(),center()
  • docker的持久化存储和共享存储和网络架构
  • 项目经理需了解的技术
  • HTTP头和网页分离方法
  • 架构师成长之路-基于android fragment通信的面向对象的万能接口
  • python学习之老男孩python全栈第九期_day004知识点总结
  • 人人快速开发平台
  • shell执行和crontab执行结果不一样的问题
  • 面对谷歌AI,这真的不是拔电线就能够解决的
  • Linux中使用sendmail发送邮件,指定任意邮件发送人
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Android系统模拟器绘制实现概述
  • bearychat的java client
  • CAP 一致性协议及应用解析
  • django开发-定时任务的使用
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JAVA多线程机制解析-volatilesynchronized
  • PhantomJS 安装
  • python 装饰器(一)
  • react 代码优化(一) ——事件处理
  • sessionStorage和localStorage
  • vue-router的history模式发布配置
  • 翻译:Hystrix - How To Use
  • - 概述 - 《设计模式(极简c++版)》
  • 规范化安全开发 KOA 手脚架
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 将回调地狱按在地上摩擦的Promise
  • 解析 Webpack中import、require、按需加载的执行过程
  • 树莓派 - 使用须知
  • 网络应用优化——时延与带宽
  • 译自由幺半群
  • FaaS 的简单实践
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Forward) Music Player: From UI Proposal to Code
  • (二)PySpark3:SparkSQL编程
  • (分布式缓存)Redis持久化
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net 调用php,php 调用.net com组件 --
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .Net中间语言BeforeFieldInit
  • .sh 的运行