HTTP Status 500 - Infinite recursion (StackOverflowError) (through reference chain: com.tianxi.entit
2017-07-07 15:43
585 查看
在controller返回数据到统一json转换的时候,出现了json infinite recursion stackoverflowerror的错误,即json在将对象转换为json格式的数据的时候,出现了无限递归调用的情况。
具体的情况如下:
A类中,有个属性:List<B> b, A与B的关系为 OneToMany;在B类中,有属性A a,引用到A中的字段id,并作为外键。hibernate查询结果正常,可以看到返回的A对象中,有b参数值,但在json转换的时候就出现了无限递归的情况。个人分析,应该是json在序列化A中的b属性的时候,找到了B类,然后序列化B类,而B类中有a属性,因此,为了序列化a属性,json又得去序列化A类,如此递归反复,造成该问题。
解决:
在B类中a的getter setter方法上加注解@JsonBackReference,其实自己试过只在setter方法上加@JsonBackReference也够了。
具体的情况如下:
A类中,有个属性:List<B> b, A与B的关系为 OneToMany;在B类中,有属性A a,引用到A中的字段id,并作为外键。hibernate查询结果正常,可以看到返回的A对象中,有b参数值,但在json转换的时候就出现了无限递归的情况。个人分析,应该是json在序列化A中的b属性的时候,找到了B类,然后序列化B类,而B类中有a属性,因此,为了序列化a属性,json又得去序列化A类,如此递归反复,造成该问题。
解决:
在B类中a的getter setter方法上加注解@JsonBackReference,其实自己试过只在setter方法上加@JsonBackReference也够了。
相关文章推荐
- Could not write JSON: Infinite recursion (StackOverflowError) (through reference chain:
- 解决Could not write JSON: Infinite recursion (StackOverflowError) (through reference chain
- Could not write JSON: Infinite recursion (StackOverflowError) (through reference chain:
- EasyUI(StackOverflowError) (through reference chain:和子属性的
- json infinite recursion stackoverflowerror错误解决方案
- Could not write content: Infinite recursion (StackOverflowError)
- 微服务间调用导致的Could not write content: Infinite recursion (StackOverflowError)问题
- py2exe issue: ImportError: No module named _fontdata_enc_winansi (http://stackoverflow.com/)
- json infinite recursion stackoverflowerror
- StackOverflowError spaceOutOfMemoryError 通过jvm调优解决(转自http://blog.sina.com.cn/s/blog_790229d301015vz)
- json infinite recursion stackoverflowerror
- HTTP Status 500 - Error instantiating servlet class com.*.servlet.TestServlet
- HTTP Status 500 - Error instantiating servlet class com.myServlet.Hello
- java.lang.StackOverflowError(INTERNAL_SERVER_ERROR,HTTP ERROR 500)
- HTTP Status 500 - No result defined for action com.action.goodsAction and result input
- j2ee 应用中 jar 编码导致的错误 HTTP Status 500 - Internal Server Error
- HTTP Status 500 -Error intstantiating servlet class
- http status 500 The server encountered an internal error that prevented it from....
- HTTP Status 500 - javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space
- Comparing cursor vs. WHILE loop performance in SQL Server 2008(ZThttp://stackoverflow.com/questions)