问题1、SQL Error: 0, SQLState: S1009
Connection is read-only. Queries leading to data modification are not allowed
(1)问题描述
if (!reqContent.getBoolean("reSave")) {
/*
代码执行到此行时,报错
SQL Error: 0, SQLState: S1009
Connection is read-only. Queries leading to data modification are not allowed
*/
modifyObject(invoiceManage);
}
(2)问题原因
配置文件applicationContext.xml中配置了,切面事务;
<!-- 配置Hibernate事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 声明式容器事务管理 ,transaction-manager指定事务管理器为transactionManager -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="modify*" propagation="REQUIRED" rollback-for="Throwable"/>
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="getGooseSubList" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config expose-proxy="true">
<!-- 只对业务逻辑层实施事务 -->
<aop:pointcut id="txPointcut"
expression="execution(* cc.messcat.service..*.*(..)) or execution(* cc.messcat.common.service..*.*(..))" />
<!-- Advisor定义,切入点和通知分别为txPointcut、txAdvice -->
<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" />
</aop:config>
(3)解决方案
cc.messcat.service..*.*(..)路径下的方法命名,必须以modify开头。
(4) 参考链接
SpringBoot 报错Connection is read-only_Co0kie_的博客-CSDN博客
Connection is read-only. Queries leading to data modification are not allowed - 飞力飞思 - 博客园