Инициализация весенней загрузки с помощью автоматической генерации schema.sql и DDL?

#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 … .