Web アプリケーションで発生する可能性のある構成バグを解決しようとしています。hibernate.hbm2ddl.auto
実行時に Hibernate から値を取得したいのですが、可能ですか? JPA EntityManager が正常に作成されました。
ありがとう
Web アプリケーションで発生する可能性のある構成バグを解決しようとしています。hibernate.hbm2ddl.auto
実行時に Hibernate から値を取得したいのですが、可能ですか? JPA EntityManager が正常に作成されました。
ありがとう
ソース コードを確認すると、ビルドに使用されるすべての構成パラメータがそのSettingsプロパティSessionFactory
内に格納され ます。
のインスタンスを指定 すると、次のコードでビルドに使用される をEntityManager
取得できます。SessionFactory
Session session = entityManager.unwrap(Session.class);
SessionFactoryImpl sessionImpl = (SessionFactoryImpl)session.getSessionFactory();
そしてSettings
、 SessionFactoryImpl からインスタンスを取得します:
Settings setting = sessionImpl.getSettings();
ただし、構成パラメーターからこのインスタンスを構築する方法の次のコードによると:Settings
Settings settings = new Settings();
String autoSchemaExport = properties.getProperty( Environment.HBM2DDL_AUTO );
if ( "validate".equals(autoSchemaExport) ) {
settings.setAutoValidateSchema( true );
}
if ( "update".equals(autoSchemaExport) ) {
settings.setAutoUpdateSchema( true );
}
if ( "create".equals(autoSchemaExport) ) {
settings.setAutoCreateSchema( true );
}
if ( "create-drop".equals( autoSchemaExport ) ) {
settings.setAutoCreateSchema( true );
settings.setAutoDropSchema( true );
}
の実際の値はインスタンスhibernate.hbm2ddl.auto
に格納されません。、およびSettings
の異なる値にのみ解決されます 。これらのプロパティを使用して、 の実際の値を決定する必要があります。autoDropSchema
autoCreateSchema
autoValidateSchema
hibernate.hbm2ddl.auto
構成プロパティを読み取るには、次のようなものを試すことができます。
AnnotationConfiguration conf = new AnnotationConfiguration().configure();
String confValue = conf.getProperty( "hibernate.hbm2ddl.auto" );