@OneToMany查詢陷入循環(huán)引用的解決方案
@OneToMany查詢陷入循環(huán)引用問(wèn)題
問(wèn)題報(bào)錯(cuò)如下


主要信息為:
wrapping Result set representing update count of 4>
以及:
exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
原本配置:

報(bào)錯(cuò)原因是兩個(gè)類都使用了急加載的方式,就會(huì)導(dǎo)致一直查找外鍵的實(shí)體類而陷入循環(huán),從而報(bào)錯(cuò)。
解決方案:按需改為L(zhǎng)AZY即可
@OneToMany( fetch = FetchType.LAZY)
success result:

JPA@OneTOMany查詢?cè)趓uturn的時(shí)候出現(xiàn)錯(cuò)誤
java.lang.IllegalStateException原因和解決方法
在controller返回?cái)?shù)據(jù)到統(tǒng)一json轉(zhuǎn)換的時(shí)候,出現(xiàn)了json infinite recursion stackoverflowerror的錯(cuò)誤,即json在將對(duì)象轉(zhuǎn)換為json格式的數(shù)據(jù)的時(shí)候,出現(xiàn)了無(wú)限遞歸調(diào)用的情況。
具體的情況如下
A類中,有個(gè)屬性:List<B> b, A與B的關(guān)系為 OneToMany;在B類中,有屬性A a,引用到A中的字段id,并作為外鍵。hibernate查詢結(jié)果正常,可以看到返回的A對(duì)象中,有b參數(shù)值,但在json轉(zhuǎn)換的時(shí)候就出現(xiàn)了無(wú)限遞歸的情況。
個(gè)人分析,應(yīng)該是json在序列化A中的b屬性的時(shí)候,找到了B類,然后序列化B類,而B類中有a屬性,因此,為了序列化a屬性,json又得去序列化A類,如此遞歸反復(fù),造成該問(wèn)題。
同時(shí)值得注意的是必須重寫其中一個(gè)類toString方法,去除其中另一個(gè)類的內(nèi)容,否則也會(huì)造成無(wú)限遞歸的產(chǎn)生。
解決
在B類中a的getter setter方法上加注解@JsonBackReference,只在setter方法上加@JsonBackReference也夠了。
如果是使用lombok注解,可以直接在B類的a字段上添加注解@JsonBackReference
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用ArrayList實(shí)現(xiàn)斗地主(無(wú)序版)
這篇文章主要為大家詳細(xì)介紹了java使用ArrayList實(shí)現(xiàn)斗地主,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
Matlab及Java實(shí)現(xiàn)小時(shí)鐘效果
這篇文章主要為大家詳細(xì)介紹了Matlab及Java實(shí)現(xiàn)小時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能
這篇文章主要為大家詳細(xì)介紹了springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08

