如何使用Spring在Hibernate 5中以编程方式验证数据库模式?

时间:2018-04-09 10:39:32

标签: java spring hibernate

This post是关于使用旧版本的Hibernate验证数据库架构。我尝试用Hibernate 5更新这段代码。

这是第一个天真的实现:

public boolean isSchemaValid() {

    // EntityManagerFactory is autowired by Spring
    SessionFactory sessionFactory =
            entityManagerFactory.unwrap(SessionFactory.class);

    ServiceRegistry serviceRegistry =
            sessionFactory.getSessionFactoryOptions().getServiceRegistry();

    try {
        new SchemaValidator().validate(
                new MetadataSources(serviceRegistry).buildMetadata(),
                serviceRegistry);
        return true;
    } catch (HibernateException ex) {
        return false;
    }
}

没有太大的意外,它不起作用,因为即使架构无效(架构不同或不存在),它也会返回true。我想这是因为传递给Metadata方法的new SchemaValidator.validate(...)对象不完整,例如不包含@Entity bean定义。但是我很难找到或正确地调用这种验证方法。

0 个答案:

没有答案