Я относительно новичок в спящем режиме, поэтому, пожалуйста, будьте осторожны. У меня проблема с долго работающим методом (~ 2 минуты) и изменением значения поля состояния для объекта, хранящегося в БД. Приведенный ниже псевдокод должен помочь объяснить мою проблему.
public foo(thing) {
if (thing.getStatus() == "ready") {
thing.setStatus("finished");
doSomethingAndTakeALongTime();
} else {
// Thing already has a status of finished. Send the user back a message.
}
}
Псевдокод не должен много объяснять. Я хочу, чтобы doSomethingAndTakeALongTime () запускался, но только если он имеет статус «готов». Моя проблема возникает всякий раз, когда для завершения doSomethingAndTakeALongTime () требуется 2 минуты, а изменение поля состояния объекта не сохраняется в базе данных до тех пор, пока оно не покинет foo (). Таким образом, другой пользователь может добавить запрос в течение этих 2 минут, и оператор if будет иметь значение true.
Я уже пытался обновить поле и сбросить сеанс вручную, но, похоже, это не сработало. Я не уверен, что делать отсюда и был бы признателен за любую помощь.
PS: мой сеанс гибернации управляется весной.