Я работаю над проектом 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)
в одном из этих методов специально для именованного запроса.1013 *
select distinct h from History h where h.url = :url and h.id <> :id and h.term = :term order by h.updatedDate desc
Я не уверен, что вызывает исключение StaleObjectStateException, что здесь не так?Любые советы по избежанию этой проблемы параллелизма были бы очень полезны