Я столкнулся со следующей проблемой с Hibernate и внешними ключами:
Когда я впервые развернул свое веб-приложение, Hibernate был настроен с такими параметрами (среди многих других):
databasePlatform
установлен на "общий" (не зависящий от движка) диалектorg.hibernate.dialect.MySQLDialect
.hibernate.hbm2ddl.auto
установить наupdate
Поскольку движком по умолчанию был MyISAM
, Hibernate логически создал MyISAM
таблиц с индексами, игнорируя создание внешних ключей (поскольку MyISAM
не поддерживает такие ограничения).
Теперь, когда я хочу перенести все таблицы на InnoDB
, я бы хотел, чтобы Hibernate автоматически создавал отсутствующие внешние ключи. К сожалению, похоже, что Hibernate просто ищет индекс:
- Если индекс существует, Hibernate не создаст соответствующий внешний ключ;
- Если я удалю индекс, Hibernate создаст и индекс, и внешний ключ.
Поскольку я не хочу удалять каждый индекс в своей схеме, знаете ли вы способ сказать Hibernate создать внешний ключ, даже если индекс создан?
Спасибо.