Hibernate多對一遍歷對象的時候報java.lang.StackOverflowError錯誤

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章