Hibernate menyediakan mode Kunci UPGRADE_SKIPLOCKED.
Menggunakan JPA dan Hibernate, untuk menghasilkan "SKIP_LOCKED" sesuai Hibernasi LockMode dokumentasi, Anda harus menggabungkan PESSIMISTIC_WRITE JPA LockModeType :
entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);
dan setelan Waktu tunggu kunci, seperti misalnya di persistensi.xml untuk unit persistensi Anda:
<properties>
<property name="javax.persistence.query.timeout" value="-2"/>
</properties>
(Perhatikan bahwa Anda juga dapat mengonfigurasi LockMode ini untuk kueri kompleks)
SKIP LOCKED bukan bagian dari ANSI SQL. Beberapa RDBMS berikut menyediakan ini sebagai fitur khusus:
Jadi dengan JPA murni, tidak mungkin untuk menentukan "SKIP LOCKED" dalam kueri. Memang, seperti yang didokumentasikan dalam LockModeType , JPA 2.1 hanya mendukung berikut ini:
- TIDAK ADA
- OPTIMIS
- OPTIMISTIC_FORCE_INCREMENT
- PESSIMISTIC_FORCE_INCREMENT
- PESSIMISTIC_READ
- PESSIMISTIC_WRITE
- BACA
- MENULIS
Namun, untuk mengaktifkan SKIP LOCKED dalam kueri Anda, Anda dapat menggunakan alternatif berikut:
- Gunakan fitur penerapan JPA tertentu, seperti Hibernasi LockMode yang memungkinkan untuk menentukan SKIP LOCKED melalui kueri JPA, berkat kombinasi PESSIMISTIC_WRITE Pengaturan khusus LockModeType Lock Timeout seperti yang dijelaskan di atas
- Buat kueri SQL asli seperti yang Anda lakukan