Dirty read в однопоточном приложении java

Есть два метода A() и B(), которые вызывают метод update(). Все методы @Transactional. Приложение однопоточное, но столкнулся с проблемой что во время работы одной транзакции, вторая считывает данные старые (dirty read), ловил nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect). Пробовал read committed, такая же ситуация. Использовал saveAndFlush для принудительного обновления данных, такая же ситуация. Дополнительно попробовал накинуть serializable уровень, теперь ловлю HHH000346: Error during managed flush [org.hibernate.exception.LockAcquisitionException: could not execute statement] это конечно же связано с тем, что отменяется обновление, которое в очереди, что можно сделать ?

Из вариантов было явный вызов exists перед методом update()


Ответы (1 шт):

Автор решения: Danzxz

Решил проблему используя lock(), слушатели паралельно пытались вызвать метод

→ Ссылка