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

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