我有一个将 Hibernate SessionFactory 用于一个数据库的现有应用程序。我们正在添加另一个数据库来进行分析。事务永远不会交叉,所以我不需要 JTA,但我确实想将 JPA EntityManager 用于新数据库。
我已经设置了 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:
谢谢