开发时,遇到多对一的关系,在多的那边添加了@JsonIgnore注解, 但是程序如下报错,出现无限递归第调用的情况。

org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: net.zjitc.xxx.pojo.XXX["XXX"]->net.zjitc.xxx.pojo.XXX["XXX"]->org.hibernate.collection.internal.PersistentBag[0]->net.zjitc.xxx.pojo.XXX["XXX"]->net.zjitc.xxx.pojo.XXX["XXX"]->org.hibernate.collection.internal.PersistentBag[0]->net.zjitc.xxx.pojo.XXX["XXX"]->net.zjitc.xxx.pojo.XXX["XXX"]->org.hibernate.collection.internal.PersistentBag[0]->net.zjitc.xxx.pojo.XXX["XXX"]->net.zjitc.xxx.pojo.XXX["XXX"]->org.hibernate.collection.internal.PersistentBag[0]->net.zjitc.xxx.pojo.XXX["XXX"]->net.zjitc.xxx.pojo.XXX["XXX"]->org.hibernate.collection.internal.PersistentBag[0]->net.zjitc.xxx.pojo.XXX["XXX"]->net.zjitc.xxx.pojo.XXX["XXX"]->org.hibernate.collection.internal.PersistentBag[0]->net.zjitc.xxx.pojo.XXX["XXX"])at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:296)at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:103)at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290)at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:180)at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

经搜索,有如下三种解决方案:

1. 由于我引入了错误的JsonIgnore,导致失效,应该引入om.fasterxml.jackson.annotation.JsonIgnore, 但我引入了org.codehaus.jackson.annotate.JsonIgnore

2. 当时用的是fastJson时,注解为@JSONField(serialize = false)

3. 在有关联关系的属性的getter方法(请注意 是getter方法不是setter方法)上添加@JsonBackReference或@JsonManagedReference注解,@JsonBackReference注解标注的属性在序列化(serialization)的时候会被忽略 即结果中的json数据不包含该属性的内容
@JsonManagedReference注解标注的属性则会被序列化

  • 在多的一方加上@JsonBackReference注解
  • 并且在一的一方加上@JsonManagedReference注解

@JsonIgnore 失效相关推荐

  1. 注解@JsonIgnore 注解使用失效问题

    如果注解失效,可能是因为你使用的是fastJson,尝试使用对应的注解来忽略字段,注解为:@JSONField(serialize = false),使用方法一样 补充: jackSon中@JsonI ...

  2. @JsonInclude、@JsonIgnore和@JsonFormat注解

    一.@JsonIgnore: 1.作用: 在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 一般标记在属性或者方法上,在返回的json数据就不包含该属性 2.场景模 ...

  3. @JsonIgnore

    作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性. 场景模拟: 需要把一个List转换成 ...

  4. 注解@JsonIgnore的使用方法效果及其他相关注解应用

    作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性. 场景模拟: 需要把一个List< ...

  5. @Transactional注解最容易忽视的三个失效场景!

    @Transactional注解在以下场景中使用,是会失效的,切记! 1.非public方法 spring对注解事务的方法进行校验,修饰符是不是public,不是 public则不会获取@Transa ...

  6. ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效

    ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击.但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候AS ...

  7. Bqq服务器的缓存文件放什么目录,如何使文件系统缓存失效? - How to invalidate the file system cache? - 开发者知识库...

    30 At least on Windows 7, it seems that attempting to open a volume handle without FILE_SHARE_WRITE ...

  8. vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法

    VSCode格式化代码功能失效的bug解决方法 前不久我装上了 黑苹果,那么为了快速转移开发环境,我使用了VSCode(Visual Studio Code下面简称VSCode)的插件 Setting ...

  9. MSP430低功耗模式-while循环失效

    如下代码实现MSP430G2553单片机两个led交替闪烁 #include <msp430.h> /*** main.c*/ int main(void) {WDTCTL = WDTPW ...

最新文章

  1. ajax请求中的reponseType和withCredetials分别是啥?
  2. 空调水系统的节能方式与水泵调节
  3. tomcat(9)Session管理
  4. 经济危机拒绝穷潇洒 试水充电战危机
  5. 第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?
  6. 堆排序和归并排序 java代码实现
  7. Android无线测试之—UiAutomator UiObject API介绍二
  8. HDU 3790 最短路径问题 (SPFA)
  9. mysql isamchk_mysqlcheck与myisamchk的区别
  10. 数据分析最常用的excel函数公式大全
  11. C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码
  12. 【Java】如何导出压缩包
  13. Monitor(二分,二维前缀和板子记录)
  14. 买到山寨版康师傅绿茶的后果
  15. nihao, woshi mr jhon
  16. android 检测软键盘,Android:检测软键盘打开
  17. eslint 如何单独给一行取消eslint检查
  18. kingcms php 排序 标签,kingcms全部标签使用教程
  19. 前后端上传到同一个Git仓库
  20. 数论概论 第五章 习题解答(上)(宋二娃的BLOG)

热门文章

  1. 3.ZooKeeper深度介绍
  2. p标签实现自动换行CSS
  3. SSM三大框架+SpringMVC的工作原理及其流程
  4. 监督学习、无监督学习、半监督学习
  5. 海量非结构化数据副本难保护,焱融科技携手英方推出联合解决方案
  6. 最小变化法/极限法测定感觉阈限时,有哪些误差?包括时间和空间误差吗?|小白心理-312/347考研答疑
  7. 登录验证码实现(Captcha)
  8. 微信小程序使用wxParse解析html
  9. Day.js轻量级 JavaScript 时间日期处理库可替代Moment.js
  10. Linux 内核 C 语言深度解析