StaleObjectStateException - для всех операций чтения?
Я работаю над проектом appfuse с базовыми приложениями Spring и Hibernate. У моего приложения есть страница, которая получает много одновременных обращений. У меня есть метод в классе контроллера, который использует DAO для выполнения основной операции.
У меня есть метод - что-то вроде следующего,
@Transactional
private void fetchHistoryRows(){
callFirstmethod();
callSecondMethod();
callThirdMethod();
callFourthMethod();
callFifthMethod();
callSixthMethod();
}
Все шесть методов, используемых внутри fetchHistoryRows()
являются операциями чтения базы данных с использованием именованных запросов. И все методы отмечены @Transactional
,
Я продолжаю получать org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
в одном из этих методов специально для именованного запроса.
Запрос также выглядит следующим образом:
select distinct h from History h where h.url = :url and h.id <> :id and h.term = :term order by h.updatedDate desc
Я не уверен, что вызывает исключение StaleObjectStateException, что здесь не так? Любые советы по избежанию этой проблемы параллелизма были бы действительно полезными