@OneToMany查询陷入循环引用的解决方案

 更新时间:2021年10月19日 08:44:53   作者:H_Dsheng  
这篇文章主要介绍了@OneToMany查询陷入循环引用的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@OneToMany查询陷入循环引用问题

问题报错如下

在这里插入图片描述

在这里插入图片描述

主要信息为:

wrapping Result set representing update count of 4>

以及:

exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

原本配置:

在这里插入图片描述 在这里插入图片描述

报错原因是两个类都使用了急加载的方式,就会导致一直查找外键的实体类而陷入循环,从而报错。

解决方案:按需改为LAZY即可

@OneToMany( fetch = FetchType.LAZY)

success result:

在这里插入图片描述

JPA@OneTOMany查询在ruturn的时候出现错误

java.lang.IllegalStateException原因和解决方法

在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类,如此递归反复,造成该问题。

同时值得注意的是必须重写其中一个类toString方法,去除其中另一个类的内容,否则也会造成无限递归的产生。

解决

在B类中a的getter setter方法上加注解@JsonBackReference,只在setter方法上加@JsonBackReference也够了。

如果是使用lombok注解,可以直接在B类的a字段上添加注解@JsonBackReference

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Java的内置异常以及创建自定义异常子类的方法

    详解Java的内置异常以及创建自定义异常子类的方法

    这篇文章主要介绍了详解Java的内置异常以及创建自定义异常子类的方法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • Redis内存数据库示例分析

    Redis内存数据库示例分析

    Redis本身的内容比较复杂。如果你上来,你应该研究一个细节点,比如连接池和数据结构。虽然可以直接了解某一点的详细来源内容,甚至尽快解决一些意外,但是容易淹没在失眠的细节中,整体控制不了Redis
    2022-12-12
  • Java那点儿事之Map集合不为人知的秘密有哪些

    Java那点儿事之Map集合不为人知的秘密有哪些

    Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的key,另一组保存着Map的value,和查字典类似,通过key找到对应的value,通过页数找到对应的信息。用学生类来说,key相当于学号,value对应name,age,sex等信息。用这种对应关系方便查找
    2021-10-10
  • 基于CopyOnWriteArrayList并发容器(实例讲解)

    基于CopyOnWriteArrayList并发容器(实例讲解)

    下面小编就为大家带来一篇基于CopyOnWriteArrayList并发容器(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java服务调用RestTemplate与HttpClient的使用详解

    Java服务调用RestTemplate与HttpClient的使用详解

    无论是微服务还是SOA,都面临着服务间的远程调用,这篇文章主要介绍了服务调用RestTemplate与HttpClient的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • SpringBoot整合SpringCloud的过程详解

    SpringBoot整合SpringCloud的过程详解

    SpringCloud专注于为典型的用例和扩展机制提供良好的开箱即用体验,在介绍SpringCloud默认使用的注册中心前,先给大家介绍下分布式系统的三个指标,具体内容详情跟随小编一起看看吧
    2021-09-09
  • 小议Java的源文件的声明规则以及编程风格

    小议Java的源文件的声明规则以及编程风格

    这篇文章主要介绍了小议Java的源文件的声明规则以及编程风格,仅给Java初学者作一个简单的示范,需要的朋友可以参考下
    2015-09-09
  • springboot实现修改请求状态404改为200

    springboot实现修改请求状态404改为200

    这篇文章主要介绍了springboot实现修改请求状态404改为200方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • SpringBoot简单实现定时器过程

    SpringBoot简单实现定时器过程

    这篇文章主要介绍了SpringBoot简单实现定时器过程,对于Java后端来说肯定实现定时功能肯定是使用到Spring封装好的定时调度Scheduled
    2023-04-04
  • IntelliJ IDEA窗口组件具体操作方法

    IntelliJ IDEA窗口组件具体操作方法

    IDEA刚接触不久,各种常用工具窗口找不到,不小心关掉不知道从哪里打开,今天小编给大家分享这个问题的解决方法,感兴趣的朋友一起看看吧
    2021-09-09

最新评论