我有一个可以访问两个不同数据库的Spring启动应用程序。
所以,我有两个模型包,每个数据库的细节。
当我使用带结果集映射的orm.xml文件指定将为查询映射的类时,我的应用程序停止启动。据我所知,因为每个数据库配置只能看到他的模型包。
我的问题是,如何指定数据库配置应该使用哪个orm?
我的dbConfig1
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactory",
basePackages = { "br.com.midwayfinanceira.microservices.cartao.sicc.repository" }
)
public class SiccDbConfig {
@Value(value="${spring.datasource.password}")
private String password;
@Value(value="${spring.datasource.username}")
private String user;
@Value(value="${spring.datasource.url}")
private String url;
@Value(value="${spring.datasource.driver-class-name}")
private String driverClassName;
@Primary
@Bean(name = "dataSource")
public DataSource dataSource() {
return DataSourceBuilder.create()
.password(CriptografiaHelper.decriptaAES128(password))
.username(user)
.driverClassName(driverClassName)
.url(url)
.build();
}
@Primary
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean
entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("dataSource") DataSource dataSource
) {
Map<String, String> map = new HashMap<>();
map.put("mapping-file", "META-INF/orm-sicc.xml");
return builder
.dataSource(dataSource)
.packages("br.com.midwayfinanceira.microservices.cartao.sicc.model")
.persistenceUnit("sicc")
.properties(map)
.build();
}
@Primary
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory") EntityManagerFactory
entityManagerFactory
) {
return new JpaTransactionManager(entityManagerFactory);
}
}
我的dbconfig2
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "siccBandEntityManagerFactory",
transactionManagerRef = "siccBandTransactionManager",
basePackages = { "br.com.midwayfinanceira.microservices.cartao.siccband.repository" }
)
public class SiccBandDbConfig {
@Value(value="${spring.datasource.password}")
private String password;
@Value(value="${spring.datasource.username}")
private String user;
@Value(value="${siccband.datasource.url}")
private String url;
@Value(value="${spring.datasource.driver-class-name}")
private String driverClassName;
@Bean(name = "siccBandDataSource")
public DataSource dataSource() {
return DataSourceBuilder.create()
.password(CriptografiaHelper.decriptaAES128(password))
.username(user)
.driverClassName(driverClassName)
.url(url)
.build();
}
@Bean(name = "siccBandEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean
siccBandEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("siccBandDataSource") DataSource dataSource
) {
return
builder
.dataSource(dataSource)
.packages("br.com.midwayfinanceira.microservices.cartao.siccband.model")
.persistenceUnit("siccBand")
.build();
}
@Bean(name = "siccBandTransactionManager")
public PlatformTransactionManager siccBandTransactionManager(
@Qualifier("siccBandEntityManagerFactory") EntityManagerFactory
siccBandEntityManagerFactory
) {
return new JpaTransactionManager(siccBandEntityManagerFactory);
}
}