我担心这会遇到相同的问题,并且我有兴趣查找有关此验证实际工作方式的更多文档。
在我看来,最好的文档是源代码,您可以检查该源代码以确切地了解正在发生的事情。相关方法是
org.hibernate.tool.hbm2ddl.SchemaValidator#validate()。
我快速浏览了代码,但 我 认为
SchemaValidator验证 数据库中的
外键不是:它检查表,列,id生成器的存在,但不检查外键。针对pet数据库的测试似乎证实了此行为:删除FK约束不会破坏架构验证(换句话说,验证器检查应用程序是否可以运行,而不是为了参照完整性)。
现在,HHH-3532被标记为固定,为什么不升级到较新版本的Hibernate,或者如果更改Hibernate的版本过于繁琐,为什么不自己为HHH-3532应用补丁?
综上所述, 我 不用
hibernate.hbm2ddl.auto=update来更新生产数据库,而是使用更改脚本。但是 我
使用
hibernate.hbm2ddl.auto=validate并且对此感到满意。



