最近在做一個有關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 的每個方法上有事務, 但都是一個只讀事務。 他們不能完成修改操作。
