·在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了。