JPA之多對(duì)多查詢死循環(huán)嵌套問題及解決方案
問題
我在嘗試用JPA來(lái)學(xué)Shiro的時(shí)候,如果雙向查詢,那么就會(huì)發(fā)生死循環(huán)嵌套造成stackOverFlow
肯定是百度過的撒,然后總結(jié)一下。
首先這不是JPA的問題,在controller接口中會(huì)進(jìn)行JSON的序列化,因?yàn)殡p向的查詢,就會(huì)發(fā)生查詢時(shí)的嵌套循環(huán),然后呢就棧溢出了
JPA生成的表結(jié)構(gòu)

解決方法有兩種
(1)不要雙向查詢
(2)在雙向查詢時(shí)用 @JsonIgnoreProperties忽略掉一個(gè)方向的字段

這樣的化在轉(zhuǎn)化為JSON后就不會(huì)查那個(gè)字段了

toString()的問題
這樣的話解決了轉(zhuǎn)化為JSON的死循環(huán)嵌套,那么toString()呢?
清空一個(gè)方向上的關(guān)于自己的集合,就可以斷開死循環(huán)嵌套了。

事實(shí)上
事實(shí)上也不太可能出現(xiàn)這樣情況,我只是為了讓三個(gè)表沒有從屬關(guān)系才雙向查詢的。
然而一般的多對(duì)多關(guān)系都會(huì)有明顯的從屬關(guān)系
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Mybatis Mapper模糊查詢的幾種方法
在Spring結(jié)合Mybatis進(jìn)行開發(fā)時(shí),實(shí)現(xiàn)模糊查詢是一個(gè)常見需求,在Mybatis中,LIKE查詢可以通過多種方式實(shí)現(xiàn),本文給大家介紹了Spring Mybatis Mapper模糊查詢的幾種方法,需要的朋友可以參考下2024-03-03
idea啟動(dòng)多個(gè)SpringBoot服務(wù)實(shí)例的最優(yōu)解決方法
啟動(dòng)SpringBoot項(xiàng)目其實(shí)就是啟動(dòng)Tomcat等服務(wù)容器,只要這個(gè)端口不同就能啟動(dòng)多個(gè)服務(wù)實(shí)例了,本文主要介紹了idea啟動(dòng)多個(gè)SpringBoot服務(wù)實(shí)例的最優(yōu)解決方法,感興趣的可以了解一下2024-05-05
SpringBoot中的Profile多環(huán)境配置方法
這篇文章主要介紹了SpringBoot中的Profile多環(huán)境配置,SpringBoot提供了兩種多環(huán)境配置的方式,分別是使用profile文件進(jìn)行多環(huán)境配置以及使用@Profile注解進(jìn)行多環(huán)境配置,需要的朋友可以參考下2023-01-01
Java使用Curator進(jìn)行ZooKeeper操作的詳細(xì)教程
Apache Curator 是一個(gè)基于 ZooKeeper 的 Java 客戶端庫(kù),它極大地簡(jiǎn)化了使用 ZooKeeper 的開發(fā)工作,在分布式系統(tǒng)中,ZooKeeper 通常被用來(lái)作為協(xié)調(diào)服務(wù),而 Curator 則為我們提供了更簡(jiǎn)潔易用的接口,本文將介紹 Curator 的核心功能及實(shí)踐樣例,需要的朋友可以參考下2025-04-04

