Hibernate giver UPGRADE_SKIPLOCKED låsetilstand.
Brug af JPA og Hibernate til at producere en "SKIP_LOCKED" i henhold til Låsetilstand i dvale dokumentation, skal du kombinere PESSIMISTIC_WRITE JPA LockModeType :
entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);
og indstillingen Lås timeout, som for eksempel i persistence.xml for din persistensenhed:
<properties>
<property name="javax.persistence.query.timeout" value="-2"/>
</properties>
(Bemærk, at du også kan konfigurere denne LockMode til komplekse forespørgsler)
SKIP LOCKED er ikke en del af ANSI SQL. Nogle RDBMS såsom følgende giver dette som en specifik funktion:
Så med ren JPA er det ikke muligt at angive en "SKIP LOCKED" i forespørgsler. Faktisk, som dokumenteret i LockModeType , JPA 2.1 understøtter kun følgende:
- INGEN
- OPTIMISTISK
- OPTIMISTIC_FORCE_INCREMENT
- PESSIMISTIC_FORCE_INCREMENT
- PESSIMISTIC_READ
- PESSIMISTIC_WRITE
- LÆS
- SKRIV
For at aktivere SKIP LOCKED i din forespørgsel kan du dog bruge disse alternativer:
- Brug specifik JPA-implementeringsfunktion, såsom Låsetilstand i dvale som gør det muligt at angive SKIP LOCKED via en JPA-forespørgsel, takket være en kombination af PESSIMISTIC_WRITE LockModeType Lock Timeout specifik indstilling som beskrevet ovenfor
- Opret en indbygget SQL-forespørgsel, som du gjorde