sql >> Database teknologi >  >> RDS >> PostgreSQL

Spring Data JPA + Hibernate Spring over låste rækker (PostgreSQL)

Din kode er fin. Alt du skal huske er, at PESSIMISTIC_WRITE bruger en SELECT …​ FOR UPDATE SKIP LOCKED i Oracle og PostgreSQL 9.5 . Jeg antager, at du kunne have glemt at fortælle JPA, at du, hvad du skal bruge nyere version af Postgres. Så du har to muligheder:

  • fortæl JPA, at du bruger PostgreSQL Dialect, som understøtter SKIP LOCKED :
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
    
    Efter dette modtog jeg ønsket output:
    where
        subscripti0_.valid_until<=? 
    and subscripti0_.status='ACTIVE' 
    for update of subscripti0_1_ skip locked
    
    og tydeligvis var samtidig tråd ikke i stand til at hente låste rækker, før transaktionen var gennemført.
  • brug indbygget forespørgsel :
    SELECT * FROM objects o WHERE o.valid_until <= :validUntil FOR UPDATE SKIP LOCKED 
    


  1. installere Oracle Instantclient på Mac OS/X uden at indstille miljøvariabler?

  2. 2 måder at returnere rækker, der kun indeholder alfanumeriske tegn i Oracle

  3. SQLDeveloper viser ingen tabeller under forbindelser, hvor der står tabeller

  4. pt-query-digest-alternativer - MySQL-forespørgselsstyring og -overvågning med ClusterControl