SpringBoot JPA懶加載失效的解決方案(親測有效)
SpringBoot JPA懶加載失效
使用springBoot JPA 對兩個實體類進行雙向關聯(lián),并設置了懶加載,如下:

然后在查詢后用到了roles,會報錯,

解決辦法如下:
1. 在配置文件中加入:
spring.jpa.properties.hibernate.enable_lazy_load_no_trans =true
2. 如果你是在SpringBoot的測試類 中使用報錯,則在方法上加入@Transactional注解
在百度查詢時發(fā)現(xiàn)有人說 修改該配置: spring.jpa.open-in-view=true ,經(jīng)測試,該項配置默認就是true,并且沒有用。
JPA懶加載引起的bug
自己閑暇用JPA寫了個ORM操作的練習,發(fā)現(xiàn)一個詭異的問題。
如下圖

1:讀取的產(chǎn)品product的實際庫存stock是20,凍結庫存frozenStock是0;
2:減少該產(chǎn)品實際庫存5,凍結庫存+5;
3:重新查詢該產(chǎn)品
問題:兩個單元校驗,發(fā)現(xiàn)實際算出來的庫存差值不是5是0!
博主通過查詢商品信息findProductById()方法得到答案。如下圖,調用方法返回的實體類product的屬性都是null,F(xiàn)7進入調試才去查詢產(chǎn)品的信息,查完之后才打印產(chǎn)品的名稱,即類的"懶加載"。所以在步驟1之后,步驟2修改了庫存,重新讀取product的庫存已經(jīng)是扣減過的15了。
解決:
在實體類上加上@Proxy(lazy = false)取消懶加載,直截了當(暫時沒想到別的)



以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot整合RabbitMQ實現(xiàn)交換機與隊列的綁定
這篇文章將通過幾個實例為大家介紹一些SpringBoot中RabbitMQ如何綁定交換機(交換器)與隊列,文中的示例代碼講解詳細,感興趣的可以了解一下2022-05-05
Java Poi 在Excel中輸出特殊符號的實現(xiàn)方法
這篇文章主要介紹了Java Poi 在Excel中輸出特殊符號的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝教程
這篇文章主要介紹了windows10 JDK安裝及配置環(huán)境變量與Eclipse安裝,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
java中ArrayList和LinkedList的區(qū)別詳解
這篇文章主要介紹了java中ArrayList和LinkedList的區(qū)別詳解,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01
詳解如何在低版本的Spring中快速實現(xiàn)類似自動配置的功能
這篇文章主要介紹了詳解如何在低版本的Spring中快速實現(xiàn)類似自動配置的功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05

