¿Cómo funciona la anotación @Version
en JPA?Java - JPA - @Version Anotación
He encontrado varias respuestas cuyo extracto es el siguiente:
APP utiliza un campo de versión en sus entidades para detectar modificaciones concurrentes para el mismo registro del almacén de datos. Cuando el tiempo de ejecución de JPA detecta un intento de modificar al mismo tiempo el mismo registro, arroja una excepción a la transacción que intenta cometer el último.
Pero todavía no estoy seguro de cómo funciona.
también a partir de las siguientes líneas:
usted debe considerar campos de versión inmutable. Cambiar el valor del campo tiene resultados indefinidos.
¿Significa que deberíamos declarar nuestro campo de versión como final
?
único que hace es cheque/actualizar la versión en cada consulta de actualización: 'ACTUALIZACIÓN myEntity SET micolumna = 'Valor nuevo', version = Versión + 1 donde version = [old.version] '. Si alguien actualizó el registro, 'old.version' ya no coincidirá con el del DB y la cláusula where impedirá que la actualización ocurra. Las 'filas actualizadas' serán '0', que JPA puede detectar para concluir que ocurrió una modificación simultánea. –