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

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

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

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

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

