Java 具有多个数据源且需要默认transactionManager bean的spring批处理

Java 具有多个数据源且需要默认transactionManager bean的spring批处理,java,spring,jpa,spring-batch,Java,Spring,Jpa,Spring Batch,我使用SpringBatch从一个db读取数据并加载到另一个db。如果我将事务管理器的主名称未设置为“transactionManager”,则会出现以下错误: 原因:java.lang.IllegalStateException:已存在值 [org.springframework.jdbc.datasource。ConnectionHolder@355c94be]为了 钥匙 [org.springframework.jdbc.datasource。DriverManagerDataSource

我使用SpringBatch从一个db读取数据并加载到另一个db。如果我将事务管理器的主名称未设置为“transactionManager”,则会出现以下错误:

原因:java.lang.IllegalStateException:已存在值 [org.springframework.jdbc.datasource。ConnectionHolder@355c94be]为了 钥匙 [org.springframework.jdbc.datasource。DriverManagerDataSource@2c532cd8] 绑定到线程[main]

为了解决这个问题,我必须将主数据库配置命名为“transactionManager”。有没有办法使用我想要的名字

第一个do配置:

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "db1EntityManager",
        transactionManagerRef = "db1TransactionManager",
        basePackages = {"com.foo.bar.car.repository.db1"})
    public class Db1Config {
       .
       .
       .

        @Primary
        @Bean
        public PlatformTransactionManager db1TransactionManager() {

            JpaTransactionManager transactionManager = new JpaTransactionManager();
            transactionManager.setEntityManagerFactory(db1EntityManager().getObject());
            return transactionManager;
        }
第二数据库配置

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "db2EntityManager",
        transactionManagerRef = "db2TransactionManager",
        basePackages = {"com.foo.bar.car.repository.db2"})
    public class Db2Config {
       .
       .
       .
    // no primary annotation
        @Bean
        public PlatformTransactionManager db2TransactionManager() {

            JpaTransactionManager transactionManager = new JpaTransactionManager();
            transactionManager.setEntityManagerFactory(db2EntityManager().getObject());
            return transactionManager;
        }

你解决了这个问题吗?