我有两个版本的同一个应用程序。他们使用类似的数据库模式。我想运行一个junit测试来比较两边的两个表。我正在使用Springboot和JPA。我可以在同一个测试中自动装配两个数据源。我可以为主数据源中的一个表自动装配CrudRepository。但是,如何在同一个Junit测试中同时为位于第二个数据源的同一个表自动装配类似的存储库?我想在同一个班级做同样的事情:
@Autowired( Datasource="primarydatasource")
CustomerRepository fistCustomerRepository;
@Autowired( Datasource="seconddatasource")
CustomerRepository secondCustomerRepository;
我在这里查了很多教程和答案,但我没有找到一个明确的例子。
您可以创建两个EntityManager
@Bean("em1")
public LocalContainerEntityManagerFactoryBean em1(
EntityManagerFactoryBuilder builder) {
return builder
.dataSource(customDataSource1())
.packages(DataSource.class)
.build();
}
@Bean("em2")
public LocalContainerEntityManagerFactoryBean em2(
EntityManagerFactoryBuilder builder) {
return ...;
}
然后,您可以在您的存储库中注入实体管理器
@Repository
class CustomerRepositoryOracle{
@PersistenceContext(name="em1")
private EntityManager entityManager;
}
@Repository
class CustomerRepositoryPostgreSQL{
@PersistenceContext(name="em2")
private EntityManager entityManager;
}