PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Spring Data JPA + Hibernate Lewati Terkunci baris (PostgreSQL)

Kode Anda baik-baik saja. Yang perlu Anda ingat adalah bahwa PESSIMISTIC_WRITE menggunakan SELECT …​ FOR UPDATE SKIP LOCKED di Oracle dan PostgreSQL 9.5 . Saya berasumsi Anda bisa lupa memberi tahu JPA, bahwa Anda harus menggunakan versi Postgres yang lebih baru. Jadi, Anda memiliki dua opsi:

  • beri tahu JPA bahwa Anda menggunakan Dialek PostgreSQL yang mendukung SKIP LOCKED :
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
    
    Setelah ini saya menerima output yang diinginkan:
    where
        subscripti0_.valid_until<=? 
    and subscripti0_.status='ACTIVE' 
    for update of subscripti0_1_ skip locked
    
    dan jelas, utas bersamaan tidak dapat mengambil baris yang dikunci sampai transaksi selesai.
  • gunakan kueri asli :
    SELECT * FROM objects o WHERE o.valid_until <= :validUntil FOR UPDATE SKIP LOCKED 
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 12:Kunci Asing dan Tabel yang Dipartisi

  2. 3 Cara Memeriksa Tipe Data Kolom di PostgreSQL

  3. Kesalahan postgres saat memasukkan - KESALAHAN:urutan byte tidak valid untuk penyandian UTF8:0x00

  4. PostgreSQL:Berikan semua izin kepada pengguna di database PostgreSQL

  5. pg_ctl Tips dan Trik