Hibernate多對一遍歷物件的時候報java.lang.StackOverflowError錯誤
阿新 • • 發佈:2019-02-13
·在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了。