【发布时间】:2018-07-22 06:27:08
【问题描述】:
我有 1 个域模型和两个不同的数据源。此外,我需要在启动时自动生成模式(hiberante 多租户无法实现)并且我不能使用 RoutingDatasource,因为我需要在调用存储库时明确选择数据库。
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "FranceEntityManagerFactory",
transactionManagerRef = "FranceTransactionManager",
basePackageClasses = {FooRepositoryFrance.class})
public class FranceDbConfig
{
@Bean
@ConfigurationProperties(prefix = "france.datasource")
public HikariDataSource FranceDataSource()
{
// init dataSource, transactionManager and EnityManagerFactory...
}
}
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "SpainEntityManagerFactory",
transactionManagerRef = "SpainTransactionManager",
basePackageClasses = {FooRepositorySpain.class})
public class SpainDbConfig
{
@Bean
@ConfigurationProperties(prefix = "spain.datasource")
public HikariDataSource SpainDataSource()
{
// init dataSource, transactionManager and EnityManagerFactory...
}
}
@Entity
public class Foo
{
// code ...
}
@Transactional("FranceTransactionManager")
public class FooRepositoryFrance extends CrudRepository...
@Transactional("SpainTransactionManager")
public class FooRepositorySpain extends CrudRepository...
无论我尝试使用 @Transactional("...") 选择数据源,它始终使用已初始化的数据源,并且实体可通过两个存储库访问。
【问题讨论】:
标签: java spring spring-data multi-tenant