Я использую Spring Boot 2.1.3 с базой данных H2 в памяти для тестирования. Когда я запускаю свои тесты, схема генерируется, даже если я указываю следующее свойство.
spring.jpa.generate-ddl=false
Кажется, что поскольку Spring Boot по умолчанию использует следующее свойство при использовании H2
spring.jpa.hibernate.ddl-auto=create-drop
Что это имеет приоритет над spring.jpa.generate-ddl=false
Это ошибка?
Из любопытства, почему вы нет хотите, чтобы схема была сгенерирована для базы данных в памяти?
@crizzis Ну, у меня были ошибки с автоматической генерацией, поэтому мне нужно было отключить ее, пока я разбирался и работал над другими вещами.
Это поведение описано в документации Особенности весенней загрузки в главе 11.3.3. Создание и удаление баз данных JPA:
By default, the DDL execution (or validation) is deferred until the
ApplicationContext
has started. There is also aspring.jpa.generate-ddl
flag, but it is not used if Hibernate auto-configuration is active, because theddl-auto
settings are more fine-grained.
Поскольку свойство spring.jpa.hibernate.ddl-auto
установлено по умолчанию, если используется Hibernate, флаг spring.jpa.generate-ddl
игнорируется, если используется Hibernate (по крайней мере, с базой данных H2 в памяти).
Нет, потому что это разные свойства. Установите для свойства
spring.jpa.hibernate.ddl-auto
значениеnone
, тогда оно должно иметь приоритет.