1

プログラムで休止状態の構成からデータソースを取得したいと思います。ここに私が書いたコードがあります:

public static DataSource getDatasource(Configuration configuration){
    ServiceRegistry registry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
    SessionFactoryImpl session = (SessionFactoryImpl)configuration.buildSessionFactory(registry);
    DatasourceConnectionProviderImpl provider = (DatasourceConnectionProviderImpl) session.getConnectionProvider();
    return provider.getDataSource();
}

しかし、アプリケーションの実行中に例外が発生しました:

Exception in thread "main" org.hibernate.HibernateException: Missing table: CONTACTS
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1281)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:508)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1769)
at com.heavenize.Migrations.getDatasource(Migrations.java:30)
at com.heavenize.Migrations.main(Migrations.java:60)

データベースの移行を行っていますが、データソースを移行ツールにプログラムで渡す必要があります。

buildSessionFactory休止状態がエンティティをデータベース内のテーブルにマップしようとしているため、問題が発生しているようです。

プロパティ"hibernate.hbm2ddl.auto"は に設定されていvalidateます。

データソースを取得するより良い方法はありますか?

4

1 に答える 1

1

あなたが得ているエラーは、の取得とは何の関係もありませんDataSource。これは、Hibernate がデータベースを使用してデータ モデルを検証していて、同期していると判断できないためです。プロパティを完全に削除するhibernate.hbm2ddl.autoと、デフォルトでプロパティが削除されnone、検証が行われなくなります。

于 2013-06-18T13:57:27.537 に答える