Як @Version
анотація в JPA?
Я знайшов різні відповіді, витяг яких такий:
JPA використовує поле версії у ваших структурах для виявлення одночасних модифікацій одного запису сховища даних. Коли час виконання JPA виявляє спробу одночасно змінити один і той же запис, він видає виняток із транзакції, яка намагається зробити останню.
Але я все ще не впевнений, як це працює.
Також з наступних рядків:
Ви повинні вважати поля версій незмінними. Зміна значення поля має невизначені результати.
Чи означає це, що ми повинні оголосити поле своєї версії як final
?
UPDATE myentity SET mycolumn = 'new value', version = version + 1 WHERE version = [old.version]
. Якщо хтось оновив запис,old.version
він більше не збігатиметься з тим, що знаходиться в БД, і пункт, де заважає відбуватися оновлення. Буде оновлено рядки0
, які JPA може виявити, щоб зробити висновок про те, що відбулася одночасна модифікація.