У меня есть это приложение, в котором с использованием профиля "по умолчанию" он подключается к базе данных PostgreSQL и выполняет миграцию с помощью Flyway.
Я хочу создать еще один профиль под названием "devEmbeddedCreate", где мне нужно использовать встроенный сервер базы данных (h2), создать базу данных с помощью spring.jpa.hibernate.ddl-auto=create-drop
в файле application.properties
и выполнить иначе называемый "data.sql" script для инициализации некоторых таблиц.
Если я оставляю script с именем файла data.sql, он запускается каждый раз при запуске приложения. Это то, чего я не хочу, мне нужно, чтобы он исполнялся только в определенном профиле.
Вещи, которые я пробовал:
-
В документации упоминается файл
schema-${platform}.sql
, и вы можете определить платформу с помощьюspring.datasource.platform
в конфигурации. Проблема в том, что он не работает с файломdata-${platform}.sql
. (здесь) -
Создан
EmbeddedDatabaseBuilder
. Проблема в том, что я использую его, он не создает автоматически базу данных и применяет только указанный script. Не удалось найти способ создания базы данных автоматически, как это делаетspring.jpa.hibernate.ddl-auto=create-drop
. (здесь и здесь) -
Поиск способа преобразования конфигурации XML в конфигурацию на основе Java нашел способ создания базы данных и всего. После многократной настройки и перехода на работу в память, он выглядел многообещающим, но не смог выяснить, почему база данных закрывается (и стирает всю ее структуру) при запуске (здесь)
Должен быть более простой способ просто сказать: "hey spring... запустите strartup this data-devEmbeddedCreate.sql
script, когда мой профиль devEmbeddedCreate
, правильно?