Запуск хранимой процедуры без ожидания ее завершения ⇐ JAVA
-
Anonymous
Запуск хранимой процедуры без ожидания ее завершения
Итак, у меня есть хранимая процедура, которую я запускаю из своего загрузочного приложения Spring. Это работает, и жизнь хороша.
Теперь я хочу запустить его асинхронно. Просто запустить процесс и не заставлять потребителя ждать ответа, но пока мне это не удалось. И при вызове из CompletableFuture, и из нового потока выдается эта ошибка:
org.springframework.dao.InvalidDataAccessApiUsageException: параметр OUT/INOUT недоступен: p_return_code; вложенным исключением является java.lang.IllegalArgumentException: параметр OUT/INOUT недоступен: p_return_code p_return_code — первый из выходных параметров. Это код:
final UploadInstanceEntity FinalUploadInstance = uploadInstance; Runnable runnable = () -> { System.out.println("Lambda Runnable работает"); runStoredProcedure (finalUploadInstance, fileReport); }; Поток потока = новый поток (работоспособный); поток.start(); И функция:
@Transactional частная пустота runStoredProcedure (UploadInstanceEntity uploadInstance, FileReport fileReport) { Map result = uploadInstanceRepository.fileUpload("CPI", uploadInstance.getId()); Я добавил транзакцию, но это само по себе не помогло.
Я также поигрался с аннотацией @Async (и соответствующими конфигурациями), но она всегда работала синхронно. Никогда в фоновом режиме.
Есть идеи, как это сделать? Я вообще на правильном пути?
Итак, у меня есть хранимая процедура, которую я запускаю из своего загрузочного приложения Spring. Это работает, и жизнь хороша.
Теперь я хочу запустить его асинхронно. Просто запустить процесс и не заставлять потребителя ждать ответа, но пока мне это не удалось. И при вызове из CompletableFuture, и из нового потока выдается эта ошибка:
org.springframework.dao.InvalidDataAccessApiUsageException: параметр OUT/INOUT недоступен: p_return_code; вложенным исключением является java.lang.IllegalArgumentException: параметр OUT/INOUT недоступен: p_return_code p_return_code — первый из выходных параметров. Это код:
final UploadInstanceEntity FinalUploadInstance = uploadInstance; Runnable runnable = () -> { System.out.println("Lambda Runnable работает"); runStoredProcedure (finalUploadInstance, fileReport); }; Поток потока = новый поток (работоспособный); поток.start(); И функция:
@Transactional частная пустота runStoredProcedure (UploadInstanceEntity uploadInstance, FileReport fileReport) { Map result = uploadInstanceRepository.fileUpload("CPI", uploadInstance.getId()); Я добавил транзакцию, но это само по себе не помогло.
Я также поигрался с аннотацией @Async (и соответствующими конфигурациями), но она всегда работала синхронно. Никогда в фоновом режиме.
Есть идеи, как это сделать? Я вообще на правильном пути?
Мобильная версия