spring.xml:文件
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" read-only="false" />
<tx:method name="add*" propagation="REQUIRED" read-only="false" />
<tx:method name="delete*" propagation="REQUIRED" read-only="false" />
<tx:method name="update*" propagation="REQUIRED" read-only="false" />
<tx:method name="list*" propagation="REQUIRED" read-only="true" />
<tx:method name="get*" propagation="REQUIRED" />
<tx:method name="import*" propagation="REQUIRED" read-only="false" />
<tx:method name="export*" propagation="REQUIRED" read-only="true" />
<tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
分析:service层里面有参与事物的方法没有按以上规则来命名,而以上配置文件规定了数据库操作函数必须要以上面的字符串开头,否则的话就按照默认的配置,对数据库访问的权限为read-only。
报错原因:我的因为service层中的方法名违背了以上规则,只要将方法名改下就可以了
解决办法:1.修改service里面方法的名字,改为符合配置文件的规则。
2.当然也可以把read-only=”true”去掉,(不推荐这种做法)