Hibernate 关联关系中toString引起的死循环
来源:互联网 发布:非线性优化计算方法pdf 编辑:程序博客网 时间:2024/06/02 01:34
在使用 Hibernate 建立关联关系时,由于测试使用的 toString 方法不当,引起了互相递归调用的死循环,具体情况如下:
建立数据库表对应的 Bean 类
Customer. java
private int customer_id; private String customer_name; private Set<Order> orders; @Override public void toString(){ return "Customer [customer_id=" + customer_id + ", customer_name=" + customer_name + ", order=" + order + "]"; }
Order. java
private int order_id; private String order_name; private Customer customer; .......//省略 getter & setter @Override public String toString() { return "Order [order_id=" + order_id + ", order_name=" + order_name + ", customer_id=" + customer + "]"; }
此处主要测试的是 Hibernate 中的“双向一对多”的关联关系,例子中:Customer 顾客可以有多个 Order 订单;由于测试时结果的展示是通过复写toString方法来实现,所以直接 Source –> toString( ),自动生成。
在后来执行结果时报出的异常,是 StackOverFlow 异常,也就是栈内存溢出;细查找原因:原来是在查其中一个结果时,例如查找 Customer的数据,调用 toString 方法,但是在 Customer 的 toString 中存在 order 对象,故又调用了 Order 的 toString 方法,而 Order 中的 toString 存在 Customer 对象,故又返回去调用了 Customer 的 toString……..如此递归死循环,造成了栈内存溢出。
解决办法:
既然知道了原因,那解决就好办了,在其中一个对象的 toString 中删除对另外一个对象的 toString 引用就可以了,比如:
customer --> customer.getCustomer_id()
将 Order 中 toString 方法里的 customer 对象改为getCustomer_id( ),这样就不会递归调用彼此的 toString 方法了。
0 0
- Hibernate 关联关系中toString引起的死循环
- 关于Hibernate中自关联向前台传送json死循环的问题
- 死循环引起的血案
- HashMap1.8中多线程扩容引起的死循环问题
- Hibernate双向关联 Json死循环
- 数组边界引起的死循环
- hibernate中关联关系的映射
- Hibernate中关联关系的配置
- hibernate中关联关系的小结
- Hibernate的关联关系
- 关于一对多的关联关系 spring json出现死循环的问题
- hibernate双向关联和json-lib使用的死循环问题的解决
- hibernate的实体类双向关联转json报错之死循环解决方案
- 关于C++中给int变量输入字符引起的死循环解决方法
- Hibernate双向关联转Json死循环问题(Gson)
- hibernate关联对象通过Springmvc转json死循环
- Hibernate中关联关系中常用的属性
- Hibernate的关联关系中lazy和fetch的设置
- codeforces 237C. Primes on Interval(二分)
- 将输入句子中的大写字母变为小写
- Schema约束、Http协议、WebService服务学习笔记
- 文章标题
- Android HandlerThread 完全解析
- Hibernate 关联关系中toString引起的死循环
- Spring的contextLoader详解
- eclipse怎么查看class文件(源码)
- Android集成微信分享,由于分享的缩略图大于32K,而无法调起微信客户端
- String类详解(浅拷贝,深拷贝,引用计数,写时拷贝)
- 导入表编程-枚举导入表
- 【分享】360云盘不限速-达峰值v7.5.4.1240版
- Python实现图片转字符画
- 83. Remove Duplicates from Sorted List