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(){
}
添加回答
舉報