2016-06-30 10 views
2

私はSpring Boot 1.3.5Hibernate 5.1を使用しています。スキーマが呼ばれると動作するかをHibernateに伝えますプロパティがHibernateのデフォルトスキーマとテーブルの注釈

spring.jpa.properties.hibernate.default_schema 

値であるspring.jpa.hibernate.ddl-autoでテーブルを作成するときに、しかし、どういうわけかそれはされませんピックアップされた(スキーマ名、開発を言うことができます)。それが仕事を得るための唯一の方法は、(私の場合のために働く少なくとも何)テーブルがで定義されたスキーマ内に作成することができれば、各エンティティ・クラスが

@Table(name = "some_table", schema = "development") 

で定義されたスキーマ名を持つことは素晴らしいことだということですスプリングブートアプリケーションのプロパティー(異なる環境ではENVとして渡すことができます)。 @Table注釈でスキーマが指定されていない場合、表はパブリック・スキーマで作成されます。

テーブルのスキーマを設定する方法はありますか?テーブルアノテーションに設定するのではなく、プロパティファイルの設定のみを使用する方法はありますか?

+1

異なるスキーマを使用する必要があるのと同じ用途があります。あなたはこれの回避策を見つけましたか? – Cindrella

+0

同じ問題がここにあります、私はpostgresqlを使用します –

+0

@roberttrudel回答の私のために働く解決策を見てください –

答えて

2

今のアプリに進化年後、私はPostgres 9.6Spring Boot 1.5.4Hibernate 5.1.5を使用しています。以前のバージョンで問題があったかどうかは分かりませんが、今はうまくいきます。

yaml設定ファイル:特別PostgreSQL96Dialectがないとして9.6を使用しているが

spring: 
    datasource: 
     driver-class-name: org.postgresql.Driver 
     platform: postgresql 
    jpa: 
     properties: 
     hibernate: 
      dialect: org.hibernate.dialect.PostgreSQL94Dialect 
      default_schema: SCHEMA_NAME 

PostgreSQL94Dialect 9.4、後に使用することができます。さらに、これは与えられたHibernateでサポートされている最高のバージョンです。

これで@Tableアノテーションにスキーマを指定する必要はありません。

0

hibernate session factoryを使用する場合は、この設定を追加できます。

@Value("${spring.jpa.properties.hibernate.default_schema}") 
private String HIBERNATE_DEFAULT_SCHEMA; 

@Bean 
public LocalSessionFactoryBean sessionFactory() { 
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); 
    sessionFactoryBean.setDataSource(dataSource); 
    sessionFactoryBean.setMappingLocations(HIBERNATE_HBM_RESOURCES); 

    Properties hibernateProperties = new Properties(); 
    hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT); 
    hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL); 
    hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO); 
    hibernateProperties.put("hibernate.default_schema", HIBERNATE_DEFAULT_SCHEMA); 

    sessionFactoryBean.setHibernateProperties(hibernateProperties); 

    return sessionFactoryBean; 
} 
+0

私はプロパティファイルを持つクリーナーソリューションを探しています。 –

関連する問題