Anda perlu menggunakan penguncian pesimis, yang dapat dicapai dengan
setLockMode(String alias, LockMode lockMode)
pada kueri dan gunakan LockMode.UPGRADE
.
Lihat Query.setLockMode
Namun, ini tentu akan mematikan skalabilitas dan kinerja jika Anda melakukan banyak akses pada tabel ini. Anda lebih baik menggunakan urutan atau strategi lain adalah membuat layanan untuk mengalokasikan nomor (mis., SSB) yang mengambil 100 nomor sekaligus, memperbarui basis data, dan membagikannya. Itu menghemat 198 akses database.
PEMBARUAN:
Anda juga harus sedikit mengubah desain tabel Anda. Lebih baik memiliki satu baris dengan ID yang diketahui dan menyimpan nomor yang Anda tambahkan di kolom lain. Maka Anda harus memperbarui baris daripada menghapus baris lama dan menambahkan yang baru. Jika tidak, strategi penguncian baris tidak akan berfungsi.
PEMBARUAN2:
OP menemukan bahwa yang berikut ini berhasil:
session.get(class.Class, id, lockOption)