sql >> Database >  >> RDS >> Oracle

Selecteer voor update overslaan vergrendeld vanaf JPA-niveau

Hibernate biedt de UPGRADE_SKIPLOCKED Lock-modus.

Gebruik JPA en Hibernate om een ​​"SKIP_LOCKED" te produceren volgens Sluimerstand LockMode documentatie, moet u de PESSIMISTIC_WRITE . combineren JPA LockModeType :

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

en de instelling voor de time-outvergrendeling, zoals bijvoorbeeld in persistence.xml voor uw persistentie-eenheid:

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

(Merk op dat u deze LockMode ook voor complexe zoekopdrachten kunt configureren)

SKIP LOCKED maakt geen deel uit van ANSI SQL. Sommige RDBMS, zoals de volgende, bieden dit als een specifieke functie:

Met pure JPA is het dus niet mogelijk om een ​​"SKIP LOCKED" op te geven in query's. Inderdaad, zoals gedocumenteerd in LockModeType , JPA 2.1 ondersteunt alleen het volgende:

  • GEEN
  • OPTIMISTISCH
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • LEES
  • SCHRIJVEN

Als u echter SKIP LOCKED in uw zoekopdracht wilt inschakelen, kunt u deze alternatieven gebruiken:

  • Gebruik een specifieke JPA-implementatiefunctie, zoals Sluimerstand LockMode waarmee de SKIP LOCKED kan worden gespecificeerd via een JPA-query, dankzij een combinatie van PESSIMISTIC_WRITE LockModeType Lock Timeout-specifieke instelling zoals hierboven beschreven
  • Maak een native SQL-query zoals u deed


  1. Softwarebedrijven die werken aan Oracle D2k, PLSQL Technologies in Noida

  2. Doctrine 2 opdrachtregelprogramma; MAMP en mysql.sock

  3. Databaseschema voor berichten naar meerdere gebruikers

  4. Grant-bestand op slechts één database