Springboot多个数据源Entityscan

时间:2017-06-06 10:55:27

标签: spring-boot

我有两个数据源,每个都处理不同的实体。我已经为实体管理器设置了实体扫描包来扫描不同的包。我也配置了" hibernate.hbm2ddl.auto"更新。当应用程序启动时,hibernate正在两个数据源中创建表。我的要求是创建映射到相应数据源的表。

1 个答案:

答案 0 :(得分:0)

您可以为资源文件夹中的每个数据源创建两个文件schema.sql(您的ddl'如创建alter drop)和data.sql(您的dml'类似于insert,delete)。然后,您应该在application.properties中放置一个属性,以便在应用程序启动时运行脚本:spring.jpa.hibernate.ddl-auto=none

Application.java课程之后,创建一个运行脚本的方法:

这是第一个ds:

@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
   DriverManagerDataSource dataSource = new DriverManagerDataSource();
   dataSource.setDriverClassName("org.h2.Driver");
   dataSource.setUrl("ds url");
   dataSource.setUsername("");
   dataSource.setPassword("");

   // schema init
   Resource initSchema = new ClassPathResource("scripts/schema-first.sql");
   Resource initData = new ClassPathResource("scripts/data-first.sql");
   DatabasePopulator databasePopulator = new 
   ResourceDatabasePopulator(initSchema, initData);
   DatabasePopulatorUtils.execute(databasePopulator, dataSource);

   return dataSource;

}

我认为它应该可行。您可以为第二个数据源创建另一种方法。