1 回答
TA贡献1780条经验 获得超5个赞
您问题的答案
我是否需要为2个数据源定义单独的TransactionManager?
是YES
从Java8开始,您可以在方法上多次具有相同的批注(前提是批注标记为@Repeatable)。实现此目的的另一种方法是提供自定义注释,该注释将处理数据源之一。
您得到的异常是因为有两个用于事务管理的合格Bean。您需要一个限定词。
代替:
@Bean(name="primary_tx")
public HibernateTransactionManager getPrimaryTransactionManager() throws IOException {
HibernateTransactionManager txName= new HibernateTransactionManager();
txName.setSessionFactory(sessionFactory().getObject());
return txName;
}
用
@Bean @Qualifier("primary_tx")
public HibernateTransactionManager getPrimaryTransactionManager() throws IOException {
HibernateTransactionManager txName= new HibernateTransactionManager();
txName.setSessionFactory(sessionFactory().getObject());
return txName;
}
现在,假设您要使我的方法m1中的事务成为原子事务。以下是您需要的
@Transactional("primary_tx")
public void m1(){
}
添加回答
举报