Spring транзакция откатилась на RuntimeExceptionJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring транзакция откатилась на RuntimeException

Сообщение Anonymous »

У меня есть транзакционный метод, и я хотел бы вызвать другой метод, который может вызвать исключение RuntimeException.

Проблема в том, что транзакция помечается как откат только при возникновении исключения.

Вызов другого метода сама находится в блоке try-catch, но я думаю, что транзакция помечается, когда другой метод возвращается, выдавая исключение.

Пример:

MyService.java

Код: Выделить всё

@Service
public class MyService {

@Autowired
private MyUtils utils;

@Autowired
private MyCrudRepository repository;

@Transactional
public void publicMethod() {
try {
utils.otherPublicMethod();
} catch (Exception ex) {
ex.printStackTrace();
}

// RollbackException: Transaction marked as rollbackOnly
// Even though I caught the exception from the method call itself
repository.save(new MyEntity());
}
}
MyUtils.java

Код: Выделить всё

@Component
public class MyUtils {

// Does not use transactions, repositories
// But I think it inherits the transaction and marks it as rollbackOnly
public void otherPublicMethod() {

// Maybe this is seen as an uncaught exception
throw new RuntimeException();
}
}
Изменить:

Я не думаю, что это дубликат Does Указание @TransactionalrollbackFor также включает RuntimeException, поскольку исключение в конечном итоге перехватывается.

Проблема может быть аналогичной, поскольку она также включает в себя транзакции и откаты.

Подробнее здесь: https://stackoverflow.com/questions/514 ... eexception
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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