场景

今天配置ssm项目时,使用的是GET请求,当输完错误时,发现报500错误

HTTP Status 500 – Internal Server Error
Type 异常报告消息 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: com.dept.emp.domain.entity.Dept_$$_jvst983_0["handler"])描述 服务器遇到一个意外的情况,阻止它完成请求。Exceptionorg.springframework.web.util.NestedServletException: 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: com.dept.emp.domain.entity.Dept_$$_jvst983_0["handler"])org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)javax.servlet.http.HttpServlet.service(HttpServlet.java:634)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Causeorg.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: com.dept.emp.domain.entity.Dept_$$_jvst983_0["handler"])org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:323)org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104)org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:287)org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:123)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)javax.servlet.http.HttpServlet.service(HttpServlet.java:634)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Causecom.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: com.dept.emp.domain.entity.Dept_$$_jvst983_0["handler"])com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1277)com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:71)com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:33)com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755)com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1513)com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1005)org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:317)org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:104)org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:287)org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:123)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)javax.servlet.http.HttpServlet.service(HttpServlet.java:634)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

经过排查后发现,后端是可以接收到前端发过来的请求的,但是响应时出现了问题,发现是JSON序列化错误,
此时因为业务需求,后端使用的是一对多的级联嵌套查询,然后配置时设置了懒加载,在mybatis-comfig.xml文件中进行的配置

<!--       懒加载,延迟查询     在使用到mybatis的嵌套查询时,如果没有使用到另一方,则不会进行查询--><setting name="lazyLoadingEnabled" value="true"/>

通过java的反射机制将pojo转换成json的。

因为json plugin用的是java的内审机制.被管理的pojo会加入[“hibernateLazyInitializer”,“handler”,“fieldHandler”]等属性,json plugin会对这些属性拿出来操作,并读取里面一个不能被反射操作的属性就产生了异常。

实体类中有的字段值为null,所以在json化的时候,fasterxml.jackson将对象转换为json报错。

两个解决办法

1.关闭懒加载,但是不建议这么干,如果关闭了一次性把所有的数据加载出来,数据量会过于庞大
2.使用一个注解
@JsonIgnoreProperties(value = { “handler” }) 设计到级联查询的两个实体类上使用该注解就能解决了.

JAVA----JSON序列化错误:InvalidDefinitionException: No serializer found for class org.apache.ibatis.execut相关推荐

  1. JAVA——json序列化错误[hibernateLazyInitializer,handler,fieldHandler]解决方案

    问题描述 (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain ...

  2. Spring Security + Session Redis——JSON序列化错误[The class xxx and name of xxx is not whitelisted. ]解决方案

    前置 Spring Security + Spring Session + Redis--[SecurityContext]和[AuthenticationToken]JSON反序列化问题解决方案 问 ...

  3. Java json序列化库gson(2)

    2019独角兽企业重金招聘Python工程师标准>>> 基于策略(自定义规则) 上面介绍的了3种排除字段的方法,说实话我除了@Expose以外,其它的都是只在Demo用上过,用得最多 ...

  4. java json 序列化对象空值不处理_jackson 实体转json 为NULL或者为空不参加序列化(实例讲解)...

    使用jackson进行序列化时,往往会遇到后台某个实体对象的属性为null,当序列化成json时对应的属性也为null:这样在某些前端组件上应用该json对象会报错.(例如:echarts) 下面总结 ...

  5. 【JAVA】解决mapper绑定异常:nested exception is org.apache.ibatis.binding.BindingException:

    异常: 原因: 由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的.由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录 ...

  6. Spring Security——集成Spring Session、Redis和JSON序列化解决方案

    官方文档 https://docs.spring.io/spring-session/docs/2.4.2/reference/html5/#spring-security Maven 主要 < ...

  7. InvalidDefinitionException: No serializer found for class java.lang.Object and no properties discove

    使用springcloudgateway 搭建项目后,写个test验证返回响应,响应结果报如下错误: {"timestamp": "2022-04-08T14:21:45 ...

  8. jackson序列化错误 get类型方法名的坑 [com.fasterxml.jackson.databind.exc.InvalidDefinitionException]

    错误:com.fasterxml.jackson.databind.exc.InvalidDefinitionException com.fasterxml.jackson.databind.exc. ...

  9. JAVA生成json效率_java序列化和json序列化效率对比

    一.背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON的序列化来做.所以我们还是比比吧. Java观点:Object2Object,使用时简单快速. JSON观点: ...

  10. JSON用于多态Java对象序列化

    长期以来,JSON已成为客户端和服务器之间各种数据序列化的事实上的标准. 除其他外,它的优势是简单和易于阅读. 但是,简单起了一些限制,我今天要谈的其中一个限制是:存储和检索多态Java对象. 让我们 ...

最新文章

  1. 面试官:一个线程OOM,进程里其他线程还能运行么?
  2. 如何查看一个linux用户的口令保留策略
  3. c++中的输入输出方法
  4. 今天,我要用“数”,向你表白。
  5. poj-2828 Buy Tickets ***
  6. servlet中文乱码_10分钟快速掌握Servlet相关基础知识
  7. 介绍一个对陌生程序快速进行性能瓶颈分析的技巧
  8. hibernate框架学习之使用SQLQuery查询数据
  9. 微博中的c++议论触发了测试人员的神经
  10. CVPR2019 Oral!伯克利、麻省理工GAN图像合成最新成果(附开源代码)!
  11. A Style-Based Generator Architecture for Generative Adversarial Networks---阅读笔记
  12. js语法、关键保留字、变量、数据类型
  13. [图解]创建虚拟机以及安装CentOS系统和创建自定义布局
  14. 53. 使 Ajax 可缓存(14)
  15. 《MySQL必知必会》学习笔记——第七章(数据过滤)
  16. 翻译:吴恩达开启我在AI工作中的新篇章
  17. app生成(免费自制app软件)
  18. android toast防重_如何解决android Toast重复显示
  19. 手机注册获取验证码的PHP代码
  20. 通过nodejs 服务器读取HTML文件渲染到页面

热门文章

  1. MiniUtilityFramework(九):CText和TEXT
  2. 利用python爬取租房信息_Python实战:爬取租房信息
  3. PROFINET通信基础知识
  4. this与bind(this)
  5. 什么是抽样平均误差?
  6. 外网访问腾讯云Debian系统服务器8081端口
  7. php jquery制作抖音,抖音制作优质脚本的方法在这里
  8. 数据库分页数据丢失问题
  9. 计算机网络毕业设计选题背景,毕业设计论文选题依据与背景
  10. U盘PE启动盘制作好后,如何进入PE系统?