#hibernate #spring-boot #jpa
#спящий режим #весенняя загрузка #jpa
Вопрос:
Возможно ли каким-то образом, чтобы пользовательский sql для создания схемы сосуществовал с автогенерацией ddl? Я могу создать schema.sql
, и он работает нормально, но он имеет приоритет над автоматической генерацией ddl и предотвращает автоматическое создание любых объектов. Я хотел бы, чтобы мои представления создавались с schema.sql
помощью, но автоматически создавались мои таблицы. Я могу создавать представления в data.sql
, и это обходной путь, но семантически не имеет смысла создавать там представления.
Ответ №1:
Согласно документации, вы не можете использовать автоматическую генерацию и schema.sql одновременно:
В приложении на основе JPA вы можете разрешить Hibernate создавать схему или использовать schema.sql, но вы не можете сделать и то, и другое. Обязательно отключите spring.jpa.hibernate.ddl-auto, если вы используете schema.sql.
Итак, вы можете сохранить автоматическую генерацию data.sql, а затем настроить Flyway для создания представлений.
Для конфигурации Flyway загрузите org.flywaydb: flyway-core в classpath:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.4</version>
</dependency>
Затем создайте свой первый сценарий миграции в /resources/db/migration/V1__createviews.sql с помощью инструкций CREATE VIEW … .