向大家分享一个小错误,也是告诫自己以后代码的严谨性有待提高
用idea写maven项目时,执行动态sql批量授权时碰到这样的网页报错:
Connection is read-only. Queries leading to data modification are not allowed
这句话用百度翻译的原话是:连接是只读的。不允许导致数据修改的查询
检查过代码没有错误,之后扶额想起,可能和之前配置事务管理有关,然后翻到application-tx.xml,代码如下:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
<tx:method name="list*" propagation="REQUIRED" read-only="true" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
再看到自己定义的方法 getBatchRoleIdtoadd(),恍然大悟
配置事务管理,上面代码的意思是,以get、list开头的方法,会被事务管理控制,并标记为read-only,即只读不可更改的意思
所以也是借这个问题警醒自己,提高自己写代码的严谨性