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