相关疑难解决方法(0)

如何使用注释以编程方式在hibernate中验证数据库模式?

看来org.hibernate.cfg.Configuration对象可以通过调用validateSchema方法以编程方式执行验证.但是,此方法需要dialect和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);
Run Code Online (Sandbox Code Playgroud)

我是在正确的轨道上吗?ConnectionHelper层次结构在包外不可见,因此我无法以这种方式获取连接对象,以构建databaseMetadata.我该如何实现呢?

编辑:我想我已经取得了一些进展.有一个SchemaValidator类.代码现在看起来像这样:

AnnotationSessionFactoryBean factory = context.getBean("&AnnotationSessionFactory");
Configuration configuration = factory.getConfiguration();       
SchemaValidator validator = new SchemaValidator(configuration); …
Run Code Online (Sandbox Code Playgroud)

spring hibernate database-schema hibernate-annotations

5
推荐指数
1
解决办法
6751
查看次数