У меня есть хранимая процедура, которая не обрабатывает транзакции (без фиксации и отката), и я вызываю ее из такого метода:
Код: Выделить всё
@Transactional
void work(Long id) {
var entity = (id == null) ? create() || fetch(id);
process(entity);
repository.callProcedure(id);
}
Этот код отлично работает для существующих объектов, но не работает для вновь созданных объектов. Кажется, что процедура Oracle не видит незафиксированные данные. Я считал, что процедура должна использовать одну и ту же транзакцию и поэтому действительно может видеть незафиксированные данные. Я бы предпочел иметь одну транзакцию, поэтому в случае сбоя процедуры Spring откатит изменения, внесенные как в Java, так и в процедуру.
Подробнее здесь:
https://stackoverflow.com/questions/786 ... ransaction