@JsonIgnore 失效
开发时,遇到多对一的关系,在多的那边添加了@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 失效相关推荐
- 注解@JsonIgnore 注解使用失效问题
如果注解失效,可能是因为你使用的是fastJson,尝试使用对应的注解来忽略字段,注解为:@JSONField(serialize = false),使用方法一样 补充: jackSon中@JsonI ...
- @JsonInclude、@JsonIgnore和@JsonFormat注解
一.@JsonIgnore: 1.作用: 在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 一般标记在属性或者方法上,在返回的json数据就不包含该属性 2.场景模 ...
- @JsonIgnore
作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性. 场景模拟: 需要把一个List转换成 ...
- 注解@JsonIgnore的使用方法效果及其他相关注解应用
作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性. 场景模拟: 需要把一个List< ...
- @Transactional注解最容易忽视的三个失效场景!
@Transactional注解在以下场景中使用,是会失效的,切记! 1.非public方法 spring对注解事务的方法进行校验,修饰符是不是public,不是 public则不会获取@Transa ...
- ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效
ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击.但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候AS ...
- 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 ...
- vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法
VSCode格式化代码功能失效的bug解决方法 前不久我装上了 黑苹果,那么为了快速转移开发环境,我使用了VSCode(Visual Studio Code下面简称VSCode)的插件 Setting ...
- MSP430低功耗模式-while循环失效
如下代码实现MSP430G2553单片机两个led交替闪烁 #include <msp430.h> /*** main.c*/ int main(void) {WDTCTL = WDTPW ...
最新文章
- ajax请求中的reponseType和withCredetials分别是啥?
- 空调水系统的节能方式与水泵调节
- tomcat(9)Session管理
- 经济危机拒绝穷潇洒 试水充电战危机
- 第一百五十一期:最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?
- 堆排序和归并排序 java代码实现
- Android无线测试之—UiAutomator UiObject API介绍二
- HDU 3790 最短路径问题 (SPFA)
- mysql isamchk_mysqlcheck与myisamchk的区别
- 数据分析最常用的excel函数公式大全
- C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码
- 【Java】如何导出压缩包
- Monitor(二分,二维前缀和板子记录)
- 买到山寨版康师傅绿茶的后果
- nihao, woshi mr jhon
- android 检测软键盘,Android:检测软键盘打开
- eslint 如何单独给一行取消eslint检查
- kingcms php 排序 标签,kingcms全部标签使用教程
- 前后端上传到同一个Git仓库
- 数论概论 第五章 习题解答(上)(宋二娃的BLOG)