问题描述
-
sybase分页存储过程中使用到了select into 语法,而select into 不能使用在已经开启事务管理的上下文中。而这里没有使用mybatis-guice 提供的@Transactional注解,但是程序仍然处在事务中。导致如下报错:
原因
-
由于这里是在guice-mybatis 环境下,网上关于guice集成mybatis的文章多数绑定的都是JdbcTransactionFactory:
而mybatis autocommit 模式默认是false,即开启了事务。JdbcTransactionFactory 会使用mybatis的提交策略。
解决方式
bindTransactionFactoryType(ManagedTransactionFactory.class); 而不是JdbcTransactionFactory。