Bagaimana cara @Version
kerja anotasi di JPA?
Saya menemukan berbagai jawaban yang ekstraknya adalah sebagai berikut:
JPA menggunakan kolom versi di entitas Anda untuk mendeteksi modifikasi serentak ke data datastore yang sama. Ketika runtime JPA mendeteksi upaya untuk mengubah rekaman yang sama secara bersamaan, itu membuat pengecualian ke transaksi yang mencoba untuk melakukan terakhir.
Tapi saya masih belum yakin bagaimana cara kerjanya.
Juga seperti dari baris berikut:
Anda harus menganggap bidang versi tidak dapat diubah. Mengubah nilai bidang memiliki hasil yang tidak ditentukan.
Apakah ini berarti bahwa kita harus mendeklarasikan field versi kita sebagai final
?
UPDATE myentity SET mycolumn = 'new value', version = version + 1 WHERE version = [old.version]
. Jika seseorang memperbarui catatan,old.version
tidak akan lagi cocok dengan yang ada di DB dan klausul where akan mencegah pembaruan terjadi. 'Baris yang diperbarui' akan menjadi0
, yang dapat dideteksi JPA untuk menyimpulkan bahwa modifikasi bersamaan terjadi.