spring.xml:文件
1 <tx:advice id="txAdvice" transaction-manager="transactionManager"> 2 <tx:attributes> 3 <tx:method name="save*" propagation="REQUIRED" read-only="false" /> 4 <tx:method name="add*" propagation="REQUIRED" read-only="false" /> 5 <tx:method name="delete*" propagation="REQUIRED" read-only="false" /> 6 <tx:method name="update*" propagation="REQUIRED" read-only="false" /> 7 <tx:method name="list*" propagation="REQUIRED" read-only="true" /> 8 <tx:method name="get*" propagation="REQUIRED" /> 9 <tx:method name="import*" propagation="REQUIRED" read-only="false" /> 10 <tx:method name="export*" propagation="REQUIRED" read-only="true" /> 11 <tx:method name="*" propagation="REQUIRED" read-only="true" /> 12 </tx:attributes> 13 </tx:advice>
分析:service層里面有參與事物的方法沒有按以上規則來命名,而以上配置文件規定了數據庫操作函數必須要以上面的字符串開頭,否則的話就按照默認的配置,對數據庫訪問的權限為read-only。
報錯原因:我的因為service層中的方法名違背了以上規則,只要將方法名改下就可以了
解決辦法:1.修改service里面方法的名字,改為符合配置文件的規則。
2.當然也可以把read-only="true"去掉,(不推薦這種做法)