我有两个数据源,每个都处理不同的实体。我已经为实体管理器设置了实体扫描包来扫描不同的包。我也配置了" hibernate.hbm2ddl.auto"更新。当应用程序启动时,hibernate正在两个数据源中创建表。我的要求是创建映射到相应数据源的表。
答案 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;
}
我认为它应该可行。您可以为第二个数据源创建另一种方法。