@mr_zadre
Java Developer

Как заполнить колонку в одной таблице данными из колонки другой таблицы при запуске программы?

Есть две таблицы в MySQL:

а) event:
id | provider_id | client_id
1 | 1                  | <null>
2 | 2                  | <null>
3 | 2                  | <null>
4 | 3                  | 4


b) providers:
id | client_id
1  | 23
2  | 45
3  | 4


Задача - обновить поле client_id из таблицы Event, значениями из поля client_id таблицы Providers.
Запрос на это дело уже описан:
UPDATE event
INNER JOIN providers ON event.provider_id = providers.id
SET event.client_id = providers.client_id


Вопрос - можно ли настроить запуск программы на Spring / Spring Boot таким образом, чтобы каждый раз при запуске программы / билде в CI/CD исполнялся данный SQL-запрос?

Есть мнение, что это можно реализовать с помощью класса Job (Spring Batch), но я не совсем понимаю, каким образом это делается.

Не прошу самого решения задачи, но хотя бы сторону - куда копать, что самому отыскать решение.
Заранее спасибо! :)
  • Вопрос задан
  • 465 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Можно просто объявить в любом удобном бине метод, аннотированный @PostConstruct и выполнить необходимые действия в нём. Только лучше сделать этот бин зависимым от EntityManager, чтобы не создался раньше. Либо объявить ApplicationListener, прослушивающий ContextRefreshedEvent. Только непонятно зачем, вся задача выглядит как костыль.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hudrogen
@hudrogen
Если используется инструмент сборки, то у maven к примеру есть sql:execute
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы