今天在整合ssh项目中,碰到一个异常,当我提交购物车数据到订单时,浏览器报了一个这样的异常.

  当时,我就吓坏了.尼玛,这不是内存溢出了吗?吓得我赶紧去检查了每一个有遍历语句的代码,结果没有发现一个死循环,折腾了两个多小时,最后终于发现了问题,简直让人抓狂,原因竟然是我在实体类,order(订单),orderItem(订单项)中都重写了ToString()方法.请看:

OrderItem.java:

package com.wang.shop.order.entity;

import com.wang.shop.goods.entity.Goods;

public class OrderItem {

    private Integer itemId;//订单项Id
private Integer count;//商品数量
private double total;//商品总价格
//订单项中的商品
private Goods goods;
//订单项所属的订单
private Order order;
//get/set方法省略 @Override
public String toString() {
return "OrderItem [itemId=" + itemId + ", count=" + count + ", total="
+ total + ", goods=" + goods + ", order=" + order + "]";
}
}

Order.java:

package com.wang.shop.order.entity;

import java.util.Date;
import java.util.HashSet;
import java.util.Set; import com.wang.shop.user.entity.User; /**
* 订单实体
* @author Administrator
*
*/
public class Order { private Integer orderId;//订单Id 主键
private String name;//收货人姓名
private String address;//收货地址
private String tel;//收货人电话
private String postNum;//邮编
private double allTotal;
private Date orderDate;//订单创建日期
//订单所属的用户
private User user;//所有用户 外键 用户Id
//订单里面的多个订单项
private Set<OrderItem> orderItems=new HashSet<OrderItem>();
//get/set方法省略 @Override
public String toString() {
return "Order [orderId=" + orderId + ", name=" + name + ", address="
+ address + ", tel=" + tel + ", postNum=" + postNum
+ ", allTotal=" + allTotal + ", orderDate=" + orderDate
+ ", user=" + user + ", orderItems=" + orderItems + "]";
}
}

请注意!请注意!请注意! 在order类中我有一个set集合的属性,value正好是orderItem,而我又重写了OrderItem的ToString方法,于是乎,当代码执行:

  System.out.println("order:"+order);或者System.out.println("orderItem:"+orderItem);

  的时候,程序打印Order时,会打印OrderItem,打印OrderItem时,会打印Order,如果反复,无限循环~~~~~最后,啪叽,内存溢出.这个错误有点让人哭笑不得,第一次遇到,真是然我手足无措,立碑如此,切勿再犯.

ssh整合问题总结--运行项目时报java.lang.StackOverflowError(堆栈溢出)异常的更多相关文章

  1. servlet运行“/*”引起的java.lang.StackOverflowError

    <servlet> <servlet-name>login</servlet-name> <servlet-class>com.jd.login.UI. ...

  2. eclipse运行程序时报java.lang.OutOfMemoryError: Java heap space内存不足问题

    System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe"); ...

  3. IntelliJ IDEA的Maven项目在修改时报java.lang.OutOfMemoryError: PermGen space异常

    什么也不说了---内存溢出,遇见太多回了,下面是解决方式: 1.在项目设置中新建Maven,然后设置VM: 2. 在pom.xml添加下面2个插件,一个是jrebel的,一个是jetty的 <b ...

  4. Debug运行项目时报错,connected to the target VM, address: '127.0.0.1:50495', transport: 'socket'

    Debug运行项目时报错,无法进入Debug,猜想出错原因可能是未正确关闭IDEA. 解决方法,先直接运行项目,然后停掉项目,再用Debug模式启动,问题解决.

  5. struts2 下载时报java.lang.IllegalStateException

    -----------------------------------------struts2 下载时报java.lang.IllegalStateException---------------- ...

  6. 【MyEcplise】导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException

    导入项目报错:Errors running builder 'JavaScript Validator' on project '项目名'. java.lang.ClassCastException ...

  7. Android 运行 gson.toJson(object) 报java.lang.StackOverflowError异常

    如以下的代码,运行后报java.lang.StackOverflowError错误: MusicSavedInfo musicSavedInfo=new MusicSavedInfo(currentS ...

  8. spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext

    spring boot启动STS 运行报错 java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext 学习了: http ...

  9. eclipse spring boot 项目出现java.lang.ClassCastException 解决方法

    问题 eclipse spring boot 项目出现java.lang.ClassCastException 解决方法: 重新生成项目

随机推荐

  1. python安装完毕后,提示找不到ssl模块的解决步骤

    转载自 醇酒醉影 python安装完毕后,提示找不到ssl模块: [root@localhost ~]# python2.7.5 Python 2.7.5 (default, Jun 3 2013, ...

  2. <十六>JDBC_使用 DBUtils 编写通用的DAO

    接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...

  3. js,css控制网页内容不让选中和复制

    ---恢复内容开始--- JS, CSS控制网页内容不让选择和复制 CSS 控制: <style> body{ -moz-user-select:none;//针对火狐浏览器,谷歌则-we ...

  4. 系统定位在iOS8中的改变

    CLLocationManager这个系统定位的类在iOS8之前要实现定位,只需要遵守CLLocationManagerDelegate这个代理即可: - (void)startLocate {   ...

  5. 今年第一季全球PC出貨量同比下降5.2%

    市場調研公司Gartner上周發佈報告稱,隨著企業支出的下滑,今年第一季全球PC出貨量同比下降5.2%迪士尼美語評價.英特爾稱,第一季筆記本晶片出貨量同比增長3%,但是筆記本晶片的平均銷售價格下降了3 ...

  6. 【转】成为Java顶尖程序员 ,看这10本书就够了

    “学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超 ...

  7. 在java中如何用键盘输入一个数,字符,字符串

    一,利用 Scanner 实现从键盘读入integer或float 型数据 import java.util.*; public class test { public static void mai ...

  8. CYQ.Data V5 数据库读写分离功能介绍

    前言 好多年没写关于此框架的新功能的介绍了,这些年一直在默默地更新,从Nuget上的记录就可以看出来: 这几天在看Java的一些东西,除了觉的Java和.NET的相似度实在太高之外,就是Java太原始 ...

  9. 七天学会ASP.NET MVC(七)——创建单页应用

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...

  10. ASP.NET MVC 从零开始 - Web.config

    这篇文章是从我的 github 博客 http://lxconan.github.io 导入的. 在上一篇中,我们从零开始创建了一个非常简单的 ASP.NET MVC 应用程序.接下来,你是不是期望我 ...