Java 具有多个数据源且需要默认transactionManager bean的spring批处理
我使用SpringBatch从一个db读取数据并加载到另一个db。如果我将事务管理器的主名称未设置为“transactionManager”,则会出现以下错误: 原因:java.lang.IllegalStateException:已存在值 [org.springframework.jdbc.datasource。ConnectionHolder@355c94be]为了 钥匙 [org.springframework.jdbc.datasource。DriverManagerDataSource@2c532cd8] 绑定到线程[main] 为了解决这个问题,我必须将主数据库配置命名为“transactionManager”。有没有办法使用我想要的名字 第一个do配置: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
@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;
}
你解决了这个问题吗?