·在Hibernate中多对一关系,有时候不习惯使用debug,比较喜欢在控制台打印出来对象。这个时候就喜欢在两个对象里面都重写toString方法。这个时候变报了下面的这个错误。
java.lang.StackOverflowError
at java.lang.Integer.toString(Integer.java:113)
at java.lang.String.valueOf(String.java:2931)
at java.lang.Integer.toString(Integer.java:722)
at java.lang.String.valueOf(String.java:2826)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.zjoa.entity.Page.toString(Page.java:97)
at java.lang.String.valueOf(String.java:2826)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at java.util.AbstractCollection.toString(AbstractCollection.java:422)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:327)
at java.lang.String.valueOf(String.java:2826)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.zjoa.entity.Menu.toString(Menu.java:86)
at java.lang.String.valueOf(String.java:2826)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.zjoa.entity.Page.toString(Page.java:98)
at java.lang.String.valueOf(String.java:2826)
原因就是你把两个对象的toString方法都重写之后,应用程序递归太深了,所以发生了堆栈溢出。解决方法就是将多的一方对象里面重写的toString方法去掉,或者两个对象里面重写的toString方法都去掉。就ok了。