在controller返回數據到統一json轉換的時候,出現了json infinite recursion stackoverflowerror的錯誤,即json在將對象轉換爲json格式的數據的時候,出現了無限遞歸調用的狀況。json
具體的狀況以下:hibernate
A類中,有個屬性:List<B> b, A與B的關係爲 OneToMany;在B類中,有屬性A a,引用到A中的字段id,並做爲外鍵。hibernate查詢結果正常,能夠看到返回的A對象中,有b參數值,但在json轉換的時候就出現了無限遞歸的狀況。我的分析,應該是json在序列化A中的b屬性的時候,找到了B類,而後序列化B類,而B類中有a屬性,所以,爲了序列化a屬性,json又得去序列化A類,如此遞歸反覆,形成該問題。 同時值得注意的是必須重寫其中一個類toString方法,去除其中另外一個類的內容,不然也會形成無限遞歸的產生。對象
解決:遞歸
在B類中a的getter setter方法上加註解@JsonBackReference,只在setter方法上加@JsonBackReference也夠了。
get
若是是使用lombok註解,能夠直接在B類的a字段上添加註解@JsonBackReferenceit