PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Spring Data JPA + Hibernate Пропускане на заключени редове (PostgreSQL)

Вашият код е добре. Всичко, което трябва да запомните е, че PESSIMISTIC_WRITE използва SELECT …​ FOR UPDATE SKIP LOCKED в Oracle и PostgreSQL 9.5 . Предполагам, че бихте могли да забравите да кажете на JPA, че какво да използвате по-новата версия на Postgres. Така че имате две възможности:

  • кажете на JPA, че използвате PostgreSQL Dialect, който поддържа SKIP LOCKED :
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
    
    След това получих желания изход:
    where
        subscripti0_.valid_until<=? 
    and subscripti0_.status='ACTIVE' 
    for update of subscripti0_1_ skip locked
    
    и очевидно, едновременната нишка не беше в състояние да извлече заключени редове, докато транзакцията не бъде завършена.
  • използвайте собствена заявка :
    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. psycopg2 всъщност не вмъква данни

  2. Как да регистрирам PostgreSQL заявки?

  3. Избройте всички таблици в postgresql information_schema

  4. Не може да се инсталира pg gem в Mavericks с Postgres.app

  5. Съхранение на часовата зона във времеви печат на тип данни с часова зона