最近項目中使用Spring data jpa 踩過的坑


最近在做一個有關OA項目中使用spring data JPA 操作數據庫,結果遇到了補個不可思議的麻煩。困惑了好久。

首先看一下問題吧,這就是當時測試“設置角色時,需要首先刪除該用戶已經擁有的角色時”報錯如下圖:

一開始遇到這個問題 並沒有感覺到有多大問題,后來就找了幾個小時還是沒有結果....后來在網上搜了好多還是沒有找到結果...這時的自己就崩潰了,於是就去網上

搜索有關spring data jpa 相關Insert 和delete 及update的等操作問題,結果一眼就看到了問題的額所在。

看一下我的sql

 

再三檢查了我的sql 發現沒有添加  @Modifying注解

於是 我趕緊在業務層方法上添加了一個事物  @Transactional 順便子sql上也加上了注解@Modifying

測試了一下結果就可以了;

總結一下:

1)可以通過自定義的 SQL 完成 UPDATE 和 DELETE 操作。 注意: JPA 不支持使用 INSERT; 
2)在 @Query 注解中編寫 SQL 語句, 但必須使用 @Modifying 進行修飾. 以通知 SpringData, 這是一個 UPDATE 或 DELETE 操作 
3)UPDATE 或 DELETE 操作需要使用事務,此時需要定義 Service 層,在 Service 層的方法上添加事務操作; 
4)默認情況下, SpringData 的每個方法上有事務, 但都是一個只讀事務。 他們不能完成修改操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM