Я обеспокоен, что это столкнется с той же проблемой, и мне интересно найти больше документации о том, как на самом деле работает эта проверка.
На мой взгляд, лучшая документация - это исходный код, который вы можете проверить, чтобы точно увидеть, что происходит. Соответствующий метод org.hibernate.tool.hbm2ddl.SchemaValidator#validate()
.
Я быстро просмотрел код и I не думаю, что SchemaValidator
проверяет внешние ключи в базе данных : он проверяет наличие таблиц, столбцов, генераторов идентификаторов но не внешние ключи. Похоже, что проверка базы данных домашних животных подтверждает это поведение: удаление ограничения FK не нарушает проверку схемы (другими словами, валидатор проверяет, может ли приложение работать, а не ссылочную целостность).
Теперь, HHH-3532 помечен как исправленный, почему бы вам не перейти на более новую версию Hibernate или, если изменение версии Hibernate слишком тяжелое, почему бы вам не применить патч для HHH-3532 для себя?
Учитывая все это, Я не использую hibernate.hbm2ddl.auto=update
для обновления производственных баз данных, я использую сценарии изменения. Но Я использую hibernate.hbm2ddl.auto=validate
, и я доволен этим.