Spring Boot, как выполнить хранимую процедуру несколько раз? - PullRequest
0 голосов
/ 18 февраля 2020

Мне нужно выполнить процедуру несколько раз с requestbody. Сейчас я использую для l oop, чтобы сделать это, но это не очень хороший способ. Например, когда один запрос не выполнен, перехват этого запроса является проблемой. См. для примера использования.

Реализация хранимой процедуры с циклом for;

**Controller**
public void runSP(
   @RequestBody List<IdNoteModel> idNotes
){
   getService().runSP(idNotes);
}

**Service**
public void runSP(List<IdNoteModel> idNotes){
   for (IdNoteModel idNote : idNotes){
      getRepository().runSP(idNote);
   }
}

**Repository**
@Query(nativeQuery = true, value = "EXECUTE PROCEDURE SP_RUN_ID_NOTE(:id, :note)")
void runSP(Long id, String note);

Есть ли лучший способ запустить сохраненный процедуры несколько раз? или у вас есть идея перехватить неудавшиеся запросы?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вы можете использовать одну хранимую процедуру, в которой вы можете использовать курсор для выполнения процедуры (SP_RUN_ID_NOTE) несколько раз. В этой хранимой процедуре вы также можете использовать откат, чтобы что-то не получилось. В приведенном выше случае вы можете сохранить ввод тела запроса в таблице, а затем вызвать процедуру, беря строку ввода из этой таблицы.

0 голосов
/ 18 февраля 2020

Вы можете использовать @ Retryable для этой цели, а также вы можете перехватывать исключения и регистрировать запросы с помощью @ Recover

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...