Субгенератор сущности Jhipster: Как создать журналы изменений жидкой базы DELTA? - PullRequest
0 голосов
/ 26 октября 2018

jhipster --version

5.3.4

Я оцениваю JHipster и проверяю, как он обрабатывает изменения базы данных DDL.В моем тесте я создал проект Jhipster и затем запустил jhipster import-jdl model.jh.JHipster сгенерировал весь интеграционный тест, и все выглядело хорошо.Итак, я развернут в производство.Но потом я понял, что определил неправильные отношения между набором сущностей.Исходный файл model.jh объявлял отношение one-to-many, когда я намеревался объявить отношение many-to-one.

Чтобы исправить это отношение, я попробовал три подхода.Сначала я попытался исправить отношение в файле model.jh и снова запустить jhipster import-jdl.Это внесло правильные изменения, которые мне нужны, за исключением того, что он переписал файлы журнала изменений в liquibase вместо того, чтобы создавать новую запись журнала изменений, содержащую только дельту.

Поэтому я отменил это изменение и попытался использовать субгенератор сущностей.Он также изменил исходные файлы журнала изменений, вместо того, чтобы создавать дельта-файл журнала изменений.Поэтому я отменил эти изменения, чтобы попробовать другой подход.

Я внес изменения в сущности вручную, а затем использовал mvn liquibase:diff.Этот подход подошел ближе всего к тому, что мне нужно.Он действительно создал новый список изменений, а не обновил исходные файлы.Но новый список изменений пытался изменить не только столбец, связанный с отношениями.Он пытался изменить типы данных для нескольких несвязанных столбцов в таблице.Он удалил замечания / комментарии из существующих столбцов.Короче говоря, это было в основном переопределение всей таблицы с нуля с гораздо большим количеством изменений, чем необходимо для небольшого изменения, которое я пытался внести.В итоге я тоже вернулась к этому подходу.

Итак, мой вопрос: для тех из вас, кто является опытными пользователями JHipster и liquibase, как вы можете изменить свои объекты после того, как они уже используются в производстве?Вы просто создаете свои списки изменений вручную или есть хороший способ их автоматического создания?

1 Ответ

0 голосов
/ 26 октября 2018
  1. Внесите изменения в свой JDL и импортируйте его
  2. Восстановите изменения в файлах журнала изменений базы данных (включая master.xml), вызванные генератором сущностей
  3. Выполните ./mvnw compile,это необходимо перед созданием журнала изменений, потому что liquibase:diff проверяет скомпилированный код
  4. Запустите ./mvnw liquibase:diff, чтобы сгенерировать журнал изменений
  5. Добавьте новый журнал изменений в master.xml
  6. Startваше приложение, liquibase запустит журнал изменений, и ваша база данных будет обновлена ​​

Шаги 3-6 описаны в документации JHipster "Использование базы данных" .Обратите внимание, что эти шаги работают, только если вы используете локальную базу данных в dev, в настоящее время она не работает с H2.

Вы можете увидеть эти шаги как коммиты в этой ветке на Github .

...