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定义。但是我很难找到或正确地调用这种验证方法。