Могу ли я использовать JPA @Version
с Spring Data REST?
В Spring Data REST 1.1.0.M1 я могу настроить экспортер репо для предоставления идентификатора объекта, который, как это бывает, также предоставляет поля с аннотациями @Version
. Поэтому я подумал, что если я попытаюсь PUT
использовать какой-либо старый номер версии, я получу OptimisticLockException
. Но этого не происходит. Вместо этого PUT
выполняется успешно (включая обновления данных), за исключением того, что номер версии всегда строго увеличивается, а не является той старой версией, которую я установил.
Я прочитал здесь, что я не должен сам устанавливать номер версии, поскольку поведение неопределенный. В этом есть смысл. Но кажется, что это делает @Version
бесполезным в тех случаях, когда все, что у меня есть, - это JSON-представление сущности вместо ссылки на сущность: с JSON-представлением мне нужно было бы отправить номер версии обратно в службу, что в конечном итоге вызовите setVersion()
, что, в свою очередь, приведет к неопределенному поведению.
Правильно ли я понимаю ситуацию? Могу ли я использовать @Version
с Spring Data REST?
ОБНОВЛЕНИЕ. Учитывая ответ Мартена, я в конечном итоге использовал события JPA для достижения оптимистичной возможности блокировки. Я написал здесь подход:
http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/