Я начинаю с оптимистической блокировки JPA. Мне нужно выполнить следующий сценарий.Какой-то частный случай оптимистической блокировки Eclipselink JPA
Пользователь не нужен Просьба для рассмотрения. Этот запрос имеет статус . Будучи просто поставленным, он имеет статус 'new'. Затем несколько служб могут наблюдать этот запрос и обслуживать его, изменяя его статус. (Статус может быть, например, «обработка», * 'put_back' *, 'finished'). Таким образом, я использую оптимистичную блокировку, чтобы гарантировать, что только один сервис в настоящее время работает с запросом. Поэтому, когда какая-то другая служба пытается поставить статус запроса с «нового» на «обработку», он даст мне OptimisticLockingException
, и я сообщу услугу с чем-то вроде этого. «Текущее состояние запроса изменилось, пожалуйста, обновите свой запрос список". Это звучит нормально. Таким образом, это ситуация, когда две службы пытаются одновременно обрабатывать один и тот же запрос.
Но мое особое требование заключается в том, что в любой период времени пользователь может отменить запрос, установив свой статус на «аннулирован». Поэтому в этом случае я могу получить исключение OptimisticLockingException
. Но мне это не нужно. Таким образом, запрос не будет отменен. Здесь я хочу поставить статус «отменен» независимо от того, был ли он изменен кем-то другим. Думаю, я не должен просить пользователя снова отменить его запрос.
Мой вопрос:: Как я могу справиться с этой ситуацией с EclipseLink 2.4.1 Я использую для настойчивости.
Примечание: Я новичок в Оптимистическом блокировании в JPA, поэтому могу что-то пропустить, пожалуйста, исправьте, если это так.
Благодарим за консультацию. Я попробую сыграть с запросом на обновление JPQL. – user1278890