Как запрос на обновление JPQL обрабатывает поле @Version? - PullRequest
0 голосов
/ 16 января 2020

Увеличивает ли запрос обновления JPQL поле @Version для поддержки блокировки Optimisti c? Я предполагаю, что нет, но тогда это означает, что обновление JPQL будет всегда проходить, то есть оно будет обновлять объект независимо от того, существует ли активная транзакция, пытающаяся обновить данный объект. В этой ситуации активная транзакция пройдет, так как поле @Version не изменилось, что приведет к потере обновления. Я прав?

Как можно избежать потерянных обновлений в этой ситуации? Стоит ли использовать пессимистику c блокировку?

1 Ответ

0 голосов
/ 28 января 2020

JPA управляет версией изнутри для вас, но не делает этого при обновлении записи через JPAUpdateClause, в таких случаях вам нужно вручную добавить приращение версии в запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...