2017-06-06 21 views
-1

私は、それぞれが異なるエンティティを扱う2つのデータソースを持っています。エンティティマネージャのエンティティスキャンパッケージを設定して、異なるパッケージをスキャンしました。更新するために "hibernate.hbm2ddl.auto"を設定しました。アプリケーションが起動すると、ハイバネートは両方のデータソースにテーブルを作成しています。私の要件は、対応するデータソースにマップされたテーブルを作成することです。Springboot複数のデータソースEntityscan

+0

あなたの** resources **フォルダに 'data.sql'と' schema.sql'を入れようとしましたか? – fiskra

+0

いいえ、2つのデータベース用に2つの設定ファイルと2つの独立したエンティティパッケージがあります。 –

答えて

0

リソースフォルダ内の各データソースに対して2つのファイルschema.sql(ddlのようなcreate alter drop)とdata.sql(dmlのような挿入、削除)を作成できます。その後spring.jpa.hibernate.ddl-auto=none

あなたApplication.javaクラスで、メソッドを作成するスクリプトを実行する:アプリケーションの起動をするとき、あなたはスクリプトを実行するために、あなたのapplication.propertiesにプロパティを置くべき

:これは最初の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; 

}

私はそれがwork.Youは、2番目のデータソースのための別の方法を作成することができるべきだと思います。

関連する問題