hibernate報錯 java.lang.StackOverflowError: null


在使用hibernate時,報錯

java.lang.StackOverflowError: null

把當前線程的棧打滿了

 

java.lang.StackOverflowError: null
    at java.util.AbstractCollection.toString(AbstractCollection.java:454) ~[?:1.8.0_111]
    at org.hibernate.collection.internal.PersistentBag.toString(PersistentBag.java:538) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
    at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_111]
    at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_111]
    at com.crhms.seabow.model.User.toString(User.java:12) ~[classes/:?]
    at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_111]
    at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_111]
    at com.crhms.seabow.model.Role.toString(Role.java:12) ~[classes/:?]
    at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_111]
    at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_111]
    at java.util.AbstractCollection.toString(AbstractCollection.java:462) ~[?:1.8.0_111]
    at org.hibernate.collection.internal.PersistentBag.toString(PersistentBag.java:538) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
    at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_111]
    at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_111]
    at com.crhms.seabow.model.User.toString(User.java:12) ~[classes/:?]
    at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_111]
    at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_111]
    at com.crhms.seabow.model.Role.toString(Role.java:12) ~[classes/:?]
    at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_111]

 

查了一下原因,應該是出現在實體的toString方法上,如果存在關聯屬性(1對多等),不能加入到toString方法中,否則出現,你打印我,我打印你,一直打下去。

雖然我的代碼中沒有寫toString方法,但是我們的lombok的Data注解,它自帶了toString,只能重寫toString方法,覆蓋lombok的toString方法。

問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM