我有一個現有的應用程序爲一個數據庫使用Hibernate SessionFactory。我們正在添加另一個用於分析的數據庫。事務將永遠不會交叉,所以我不需要JTA,但我確實想爲新數據庫使用JPA EntityManager。有沒有辦法在Spring中定義一個默認的事務管理器
我已經建立了EntityManager和新的事務管理器,我已經認證了,但是Spring抱怨我需要限定現有的@Transactional註釋。我試圖找到一種方法告訴Spring使用txManager之一作爲默認值。有沒有辦法做到這一點?否則,我必須將限定符添加到所有現有的@Transactional註釋中,如果可能,我會盡量避免這些註釋。
@Bean(name = "jpaTx")
public PlatformTransactionManager transactionManagerJPA() throws NamingException {
JpaTransactionManager txManager = new JpaTransactionManager(entityManagerFactory());
return txManager;
}
@Bean
public PlatformTransactionManager txManager() throws Exception {
HibernateTransactionManager txManager = new HibernateTransactionManager(sessionFactory());
txManager.setNestedTransactionAllowed(true);
return txManager;
}
錯誤我得到
No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected single matching bean but found 2:
感謝
這可以在XML中完成,因爲我們已經有了在XML中定義的事務管理器。謝謝。 – Mustafa 2014-07-24 23:36:17
@Mustafa是的,你只需要使用屬性'primary'並將它設置爲'true'就可以成爲你想成爲主要的bean。 – Josh 2014-07-26 00:28:48