org.hibernate.cfg.Configurationオブジェクトを使用して、validateSchemaメソッドを呼び出すことでプログラムで検証を実行できるようです。ただし、このメソッドには方言とdatabaseMetadataオブジェクトが必要です。私はSpringを使用しており、SpringコンテキストからAnnotationSessionFactoryBeanオブジェクトを取得できます。これまでのところ、次のコードがあります。
AnnotationSessionFactoryBean factory = null;
factory = (AnnotationSessionFactoryBean) context.getBean("AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
//the following line does not work, ConnectionHelper hierarchy is not visible outside the package
ConnectionHelper connectionHelper =
new ManagedConnectionProviderConnectionHelper(factory.getHibernateProperties());
Dialect dialect = Dialect.getDialect(factory.getHibernateProperties());
Connection connection = null;
DatabaseMetadata databaseMetadata = null;
try {
databaseMetadata = new DatabaseMetadata(connection, dialect);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
configuration.validateSchema(dialect, databaseMetadata);
私は正しい方向に進んでいますか?ConnectionHelper階層はパッケージの外には表示されないため、databaseMetadataを構築するために、その方法で接続オブジェクトを取得することはできません。どうすればこれを実装できますか?
編集:私はいくつかの進歩を遂げたと思います。SchemaValidatorクラスがあります。コードは次のようになります。
AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();
SchemaValidator validator = new SchemaValidator(configuration);
validator.validate();
しかし、今、私は次のエラーを受け取っています:
org.hibernate.HibernateException:構成用のローカルデータソースが見つかりません-'dataSource'プロパティをLocalSessionFactoryBeanに設定する必要があります