从不同数据源中的类似表自动装配存储库

问题描述 投票:0回答:2

我有两个版本的同一个应用程序。他们使用类似的数据库模式。我想运行一个junit测试来比较两边的两个表。我正在使用Springboot和JPA。我可以在同一个测试中自动装配两个数据源。我可以为主数据源中的一个表自动装配CrudRepository。但是,如何在同一个Junit测试中同时为位于第二个数据源的同一个表自动装配类似的存储库?我想在同一个班级做同样的事情:

@Autowired( Datasource="primarydatasource")
CustomerRepository fistCustomerRepository;

@Autowired( Datasource="seconddatasource")
CustomerRepository secondCustomerRepository;

我在这里查了很多教程和答案,但我没有找到一个明确的例子。

spring-boot jpa
2个回答

0
投票

您可以创建两个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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.