Вы можете использовать один из двух подходов:
Оптимистическая блокировка: JPA не будет создавать дополнительные блокировки, но будет использовать столбец версии, чтобы убедиться, что значение, которое оно обновляет, совпадает с исходной загрузкой и выдает исключение, если это не так.
Вы можете просто включить это, добавив атрибут версии, то есть столбец с аннотацией @Version
. Конечно, вам придется поймать полученный результат OptimisticLockException
и действовать соответствующим образом (возможно, пытаясь снова).
Пессимистическая блокировка: JPA создаст блокировку строки базы данных, поэтому ничто не сможет изменить ее, пока JPA не завершит работу.
См. справочную документацию Spring Data JPA .
Вот связанный вопрос о том, как этого добиться .