@OneToMany查詢陷入循環(huán)引用的解決方案
@OneToMany查詢陷入循環(huán)引用問題
問題報錯如下
主要信息為:
wrapping Result set representing update count of 4>
以及:
exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
原本配置:
報錯原因是兩個類都使用了急加載的方式,就會導致一直查找外鍵的實體類而陷入循環(huán),從而報錯。
解決方案:按需改為LAZY即可
@OneToMany( fetch = FetchType.LAZY)
success result:
JPA@OneTOMany查詢在ruturn的時候出現(xiàn)錯誤
java.lang.IllegalStateException原因和解決方法
在controller返回數(shù)據(jù)到統(tǒng)一json轉換的時候,出現(xiàn)了json infinite recursion stackoverflowerror的錯誤,即json在將對象轉換為json格式的數(shù)據(jù)的時候,出現(xiàn)了無限遞歸調用的情況。
具體的情況如下
A類中,有個屬性:List<B> b, A與B的關系為 OneToMany;在B類中,有屬性A a,引用到A中的字段id,并作為外鍵。hibernate查詢結果正常,可以看到返回的A對象中,有b參數(shù)值,但在json轉換的時候就出現(xiàn)了無限遞歸的情況。
個人分析,應該是json在序列化A中的b屬性的時候,找到了B類,然后序列化B類,而B類中有a屬性,因此,為了序列化a屬性,json又得去序列化A類,如此遞歸反復,造成該問題。
同時值得注意的是必須重寫其中一個類toString方法,去除其中另一個類的內容,否則也會造成無限遞歸的產生。
解決
在B類中a的getter setter方法上加注解@JsonBackReference,只在setter方法上加@JsonBackReference也夠了。
如果是使用lombok注解,可以直接在B類的a字段上添加注解@JsonBackReference
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Java的內置異常以及創(chuàng)建自定義異常子類的方法
這篇文章主要介紹了詳解Java的內置異常以及創(chuàng)建自定義異常子類的方法,是Java入門學習中的基礎知識,需要的朋友可以參考下2015-09-09基于CopyOnWriteArrayList并發(fā)容器(實例講解)
下面小編就為大家?guī)硪黄贑opyOnWriteArrayList并發(fā)容器(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Java服務調用RestTemplate與HttpClient的使用詳解
無論是微服務還是SOA,都面臨著服務間的遠程調用,這篇文章主要介紹了服務調用RestTemplate與HttpClient的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06springboot實現(xiàn)修改請求狀態(tài)404改為200
這篇文章主要介紹了springboot實現(xiàn)修改請求狀態(tài)404改為200方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07