Connection is read-only. Queries leading to data modification are not allowed


后台對數據進行操作時遇到這個問題 是事務的保護機制

事務管理對於企業應用來說是至關重要的,即使出現異常情況,它也可以保證數據的一致性。

spring支持編程式事務管理和聲明式事務管理兩種方式。

   編程式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager。對於編程式事務管理,spring推薦使用TransactionTemplate。

  聲明式事務管理建立在AOP之上的。其本質是對方法前后進行攔截,然后在目標方法開始之前創建或者加入一個事務,在執行完目標方法之后根據執行情況提交或者回滾事務。

  聲明式事務管理也有兩種常用的方式,一種是基於tx和aop名字空間的xml配置文件,另一種就是基於@Transactional注解。顯然基於注解的方式更簡單易用,更清爽。

       當作用於類上時,該類的所有 public 方法將都具有該類型的事務屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。

 

 

 

加了事務注解的類里面,當方法對數據庫進行操作的時候就會出現 Connection is read-only. Queries leading to data modification are not allowed 這個報錯解決辦法就是在方法上加上

@Transactional(readOnly = false, rollbackFor = Exception.class)

 就可以解決問題了

在@Transactional注解中如果不配置rollbackFor屬性,那么事物只會在遇到RuntimeException的時候才會回滾,加上rollbackFor=Exception.class,可以讓事物在遇到非運行時異常時也回滾

附圖:

 


免責聲明!

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



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