关于SpringDataJpa中测试出现StackOverflowError错误问题

在使用SpringDataJpa进行多表查询时,使用导航查询,每次都出现

StackOverflowError错误,

经过查找资料,网上百度,终于找到原因,

StackOverflowError 是栈溢出的意思
当我自己遇到这个问题百度出来的造成原因几乎都是说 递归或者死循环导致。 我自己的项目却是因为写了实体类中的toString方法导致。

  因为所做的测试是多对多的测试,两边的实体类中都有对方对象的集合对象,

    //其中一个实体类
    public class Hobby implements java.io.Serializable {
        // Fields
        private Integer hobbyId;
        private String hobbyName;
        private Set<Nurse> nurses = new HashSet<Nurse>();
    }
    //另一个一个实体类
    public class Nurse implements java.io.Serializable {
        // Fields
        private Integer id;
        private Dept dept;
        private String name;
        private Integer age;
        private String content;
        private String datea;
        private Set<Hobby> hobbies = new HashSet<Hobby>();
    }

  可以看出俩个实体类互相都有对方的一个set集合。如果用tostring方法输出其中一个实体类Hobby,他对应的set
  集合也会输出,里面的另一个实体类Nurse也会输出,然后Nurse里面还有Hobby的set集合。这样就陷入了死循环无限互相输出。 

 解决方式之一

  删除两个实体类的toString方法

 解决方式之二

  输出之前将其中的 set集合设置为null
  Nurse nurse = new Nurse();
  nurse.setNurses(null);  

 解决方式之三

  利用JsonConfigUtil 去除死循环工具类

  JsonConfig config = JsonConfigUtil.getConfig();
  JSONArray.fromObject(list, config);
  把要转换json格式的对象或集合放入第一个参数,
  把工具类创建的对象设置为第二个参数
  就能完成自动断开关系。去掉死循环

原文地址:https://www.cnblogs.com/zxgCoding/p/12230887.html

时间: 2024-11-15 16:09:28

关于SpringDataJpa中测试出现StackOverflowError错误问题的相关文章

Oracle中字符缓冲区相关错误

一.buffer overflow,limit of 10000 bytesdeclarebeginfor c in 1..1000 loop dbms_output.put_line('测试测试测试');end loop;end;缓冲区默认大小为10000 bytes.循环1000次就一共有6000个汉字,也就是12000 bytes.在SQL窗口的输出标签页中设置缓冲区大小. 二.数字或值错误:字符串缓冲区太小declarev varchar2(100):='';beginfor c in

【MongoDB】探讨《MongoDB权威指南》书籍中的几点错误

今天进一步学习MongoDB,学习资料是<MongoDB权威指南>,详细见如下封面: 在阅读过程中发现了如下错误: 第一处:P29页批量插入,在书中讲到可以利用batchInsert函数实现批量插入,我运行时候发现系统提示没有这个方法.我用的软件是2.6.4.我以为是版本过低,然后下载2.6.6 最新版本进行测试,报同样的错误: Property 'batchInsert' of object student.students is not a function 后来查询用命令:db.stud

shell中测试语句的应用

在linux中测试语句的引入能够帮助我们在日常工作中提高工具效率,减少工作强度具有很重要的意义.因此本文主要介绍linux中shell脚本中关于测试语句的介绍和使用方法. 一.测试语句的范围 整数.字符串.文件 二.变量测试语句语法格式 test 测试条件 [ 测试条件 ] 三.测试关系 3.1变量测试关系     ==    -eq    //等于     !=    -ne    //不等于     >=    -ge    //大于等于     >     -gt    //大于    

敏捷团队中测试人员的角色

Karen Greaves和Sam Laing将会在Agile Testing Days 2015上发表主旨演讲,演讲题目为"测试人员正在消亡",Agile Testing Days 2015将于11月9日至12日德国Potsdam举行.小编将会覆盖本次会议报道. 小编对二人进行了采访,关于敏捷是如何影响测试人员角色的,为了缩短测试交付周期,测试人员可以采取哪些措施,敏捷团队中测试人员与其他团队成员之间的协作,敏捷团队中测试人员可以贡献的价值. 小编:我的经验是,敏捷更广泛的普及率正在

php中序列化与反序列化在utf8和gbk编码中测试

在php中如果我们统一编码是没有什么问题了,但是很多朋友会发现一个问题就是utf8和gbk编码中返回的值会有所区别: php 在utf8和gbk编码下使用serialize和unserialize互相序列化和反序列化会出现无法成功反序列化的问题. 问题出现的原因主要是在不同编码下strlen函数计算中文字符串长度不同的原因. <?php $array=array('title'=>'php教程分享网','url'=>'http://www.111cn.net'); echo serial

bash脚本中出现[[:not found错误的解决方法

bash脚本中出现[[:not found错误的解决方法--bash脚本总结1 今天在写脚本的时候,发生了一个奇怪的问题:在脚本中使用[[的时候报错“[[: not found”.遇到问题自然是解决问题. 1. 使用的bash版本太低? bash --version查看bash版本信息如下 [email protected]:~$bash --version GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu) Copyright (C)

编程中遇到的Python错误和解决方法汇总整理

这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析,并持续更新,方便以后查询,学习.知识在于积累嘛!微笑+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++错误: 复制代码代码如下: >>> def f(x, y):      print x, y  >>> t

【翻译自mos文章】ABMR:在asm 环境中测试Automatic Block Recover 特性的方法

ABMR:在asm 环境中测试Automatic Block Recover 特性的方法 参考原文: ABMR: How to test Automatic Block Recover Feature with ASM setup (Doc ID 1510090.1) 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.3 and later Information in this document applies to any

Android中测试框架使用简介

测试 好的程序是测出来的. 测试的目的:尽可能多的测试出程序中的bug. 测试分为 黑盒测试:测试业务逻辑 白盒测试:测试逻辑方法.一般是写一段脚本代码,通过脚本代码去调用业务逻辑方法. 按照测试粒度分为: 方法测试:function test   测试某一个方法 单元测试:unit test      测试某一个类或者某一个单元的多个方法 集成测试:integration testv服务器和客户端联合调试,测试的是多个单元. 系统测试 system test      测试的是整个系统的功能,