当前使用版本(必填,否则不予处理)
该问题是如何引起的?(确定最新版也有问题再提!!!)
我定义了 多个事务管理器 gameTransactionManager, goodsTransactionManager, xxxTransactionManager, 当我在外面的方法也加上 @Transactional(rollbackFor = Exception.class, value = "gameTransactionManager") 那么 批量保存的 事务就找不到具体事务管理器
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveBatch(Collection
重现步骤(如果有就写完整)
个人建议
@Transactional(rollbackFor = Exception.class) 这个注解不应该加到框架里面,应该由用户自己去定义,或者开放设置,提供调用这定义 @Transactional 的配置
报错信息
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.TransactionManager' available: expected single matching bean but found 4: transactionManager,gameTransactionManager,goodsTransactionManager at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1273) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:494) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) at org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:503) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:342) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
Comment From: ansel-peng
这个跟mybatis没什么关系,如果需要,可以手动事务
@SpringBootTest
public class TransactionTest {
@Autowired
private DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
private TransactionDefinition transactionDefinition;
@Autowired
private UserMapper userMapper;
@Test
public void transactionTest() {
TransactionStatus transaction = dataSourceTransactionManager.getTransaction(
transactionDefinition);
User user = new User();
user.setAge(10);
user.setName("ansel");
userMapper.insert(user);
dataSourceTransactionManager.commit(transaction);
}
}
Comment From: qmdx
up
Comment From: elcnu986
这个跟mybatis没什么关系,如果需要,可以手动事务
```java @SpringBootTest public class TransactionTest {
@Autowired private DataSourceTransactionManager dataSourceTransactionManager;
@Autowired private TransactionDefinition transactionDefinition;
@Autowired private UserMapper userMapper;
@Test public void transactionTest() { TransactionStatus transaction = dataSourceTransactionManager.getTransaction( transactionDefinition); User user = new User(); user.setAge(10); user.setName("ansel"); userMapper.insert(user); dataSourceTransactionManager.commit(transaction); } } ```
多数据源可以这样用吗?