ТранзакцияTemplate.executeWithoutResult не выдает ошибку, если транзакция не удаласьJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ТранзакцияTemplate.executeWithoutResult не выдает ошибку, если транзакция не удалась

Сообщение Anonymous »


Я использую Spring-tx с базой данных PostgreSQL. В приведенном ниже фрагменте теста исключение SQL возникает внутри транзакции («TX: вторая вставка») и поглощается кодом.

Если исключение было перехвачено в коде Java, может ли вызывающая сторона transactionTemplate.executeWithoutResult получить обратную связь, указывающую, когда транзакция завершилась неудачей и был откачен?
void testSwallowingNonSerializationException() { TransactionTemplate transactionTemplate = новый TransactionTemplate (менеджер); транзакцияTemplate.executeWithoutResult( (т) -> { log.info("TX: первая вставка"); dslContext.insertInto(Author.AUTHOR).values(100, «повезло», «вы»).execute(); log.info("TX: первая вставка выполнена"); пытаться { log.info("TX: Вторая вставка"); dslContext.insertInto(Author.AUTHOR).values(100, «повезло», «вы»).execute(); log.info("TX: Вторая вставка выполнена"); } catch (Исключение е) { log.error("TX: вторая вставка не удалась", e); log.info("TX: исключение проглатывания {}", e.getMessage()); } }); // Примечание: из метода транзакции() не создается никаких исключений.. Утверждения.assertThrows( java.util.NoSuchElementException.класс, () -> { вал автор = dslContext .selectFrom(Автор.АВТОР) .where(Автор.AUTHOR.ID.eq(100)) .fetchOptional() .orElseThrow() .into(Автор.класс); System.out.println(автор); }); }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»