错误原因是,使用spring配置了事物。配置如下:
<!-- 定义哪些方法需要执行事务 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="query*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="load*" read-only="true" />
<tx:method name="select*" read-only="true" />
<!-- 指定目标方法采用哪种事务管理 -->
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
因此如果在类似 get*方法中执行update操作的话,就会报“Connection is read-only. Queries leading to data modification are not allowed”的异常。