Spring调用informix存储过程的种种怪问题:
注意:
- 如果informix存储过程中有事务,spring使用DataSourceTransactionManager会启动事务上下文,无论是propagation="NOT_SUPPORTED"还是propagation="NEVER",都会报错:already in transaction
- 如果此类不被AOP 拦截,还是会报错
- 如果换一个事务管理器hibernateTransactionManager,同样会报错
- 只有把autommit设成true,并且使用jdbc才能成功执行informix存储过程
注意:
- 可以使用DataSourceUtils.getConnection获得Connection后设置autocommit,用完后设回来
- 如果上下文中有TransactionManager,即使配置文件中autocommit=true,spring也会自动设置成false