sql >> Databasteknik >  >> RDS >> Oracle

Välj för uppdatering hoppa låst från JPA-nivå

Hibernate ger UPGRADE_SKIPLOCKED låsläge.

Använd JPA och Hibernate för att skapa en "SKIP_LOCKED" enligt Hibernate LockMode dokumentation måste du kombinera PESSIMISTIC_WRITE JPA LockModeType :

entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);

och inställningen Lock timeout, som till exempel i persistence.xml för din persistensenhet:

<properties>
   <property name="javax.persistence.query.timeout" value="-2"/>
</properties>

(Observera att du kan konfigurera detta LockMode för komplexa frågor också)

SKIP LOCKED är inte en del av ANSI SQL. Vissa RDBMS såsom följande tillhandahåller detta som en specifik funktion:

Så med ren JPA är det inte möjligt att ange ett "SKIP LOCKED" i frågor. Faktiskt, som dokumenterats i LockModeType , JPA 2.1 stöder endast följande:

  • INGEN
  • OPTIMISTISK
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • LÄS
  • SKRIV

Men för att aktivera SKIP LOCKED i din fråga kan du använda dessa alternativ:

  • Använd specifik JPA-implementeringsfunktion, som Hibernate LockMode som gör det möjligt att specificera SKIP LOCKED via en JPA-fråga, tack vare en kombination av PESSIMISTIC_WRITE LockModeType Lock Timeout-specifik inställning enligt beskrivningen ovan
  • Skapa en inbyggd SQL-fråga som du gjorde


  1. Prestanda för bcp/BULK INSERT kontra tabellvärderade parametrar

  2. Kan inte öppna Visa->DBA-menyn i SQL Developer (Oracle 12C Standard Edition installerad)

  3. MySQL grupperar vissa resultat i en array

  4. SQL:Transponera rader till kolumner