Неагрессивное обновление DDL с помощью Spring Boot 3/Hibernate 6.1?

В Spring Boot 2 параметр «обновить» DDL создавал новые таблицы, но не изменял типы и размеры столбцов, не добавлял столбцы и не вносил другие мелкие изменения в схему. В Spring Boot 3 и Hibernate 6.1 обновление гораздо более агрессивное, включая:

  • Длины и типы строковых столбцов изменяются на значения по умолчанию, например VARCHAR2(255 CHAR) для строк.
  • Отношения по внешнему ключу устанавливаются, хотя они уже существуют (вызывает ошибки).

Это проблема, поскольку у нас много таблиц и строковых столбцов с гораздо меньшими значениями. Использование «обновления» DDL в этой схеме теперь изменяет сотни типов столбцов (пример: с VARCHAR2 (8 BYTE) на VARCHAR2(255 CHAR)), что нежелательно.

У меня есть возможность добавить «length=x» к каждой аннотации @Column, чтобы предотвратить изменение длины, но мне бы хотелось избежать этой большой работы.

Можно ли получить старое поведение в Spring Boot 3?

Есть ли какая-либо документация, обсуждающая это новое поведение? Кажется, об этом не упоминается: https://docs.jboss.org/hibernate/orm/6.0/migration-guide/migration-guide.html .

Вот используемые свойства:

      spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.OracleDialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update

0 ответов

Другие вопросы по тегам