Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wybierz dla pominięcia aktualizacji zablokowane z poziomu JPA

Hibernacja zapewnia tryb blokady UPGRADE_SKIPLOCKED.

Korzystanie z JPA i Hibernate, aby utworzyć „SKIP_LOCKED” zgodnie z Hibernacja trybu blokady dokumentacji, musisz połączyć PESSIMISTIC_WRITE WZP LockModeType :

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

i ustawienie limitu czasu blokady, jak na przykład w persistence.xml dla twojej jednostki trwałości:

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

(Pamiętaj, że możesz skonfigurować ten tryb blokady również dla złożonych zapytań)

SKIP LOCKED nie jest częścią ANSI SQL. Niektóre RDBMS, takie jak następujące, zapewniają to jako specyficzną funkcję:

Tak więc w przypadku czystego JPA nie jest możliwe określenie „POMIŃ ZABLOKOWANY” w zapytaniach. Rzeczywiście, jak udokumentowano w LockModeType , JPA 2.1 obsługuje tylko następujące elementy:

  • BRAK
  • OPTYMISTYCZNY
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • CZYTAJ
  • PISAĆ

Aby jednak włączyć SKIP LOCKED w zapytaniu, możesz użyć następujących alternatyw:

  • Użyj określonej funkcji implementacji JPA, takiej jak Hibernuj tryb blokady co pozwala określić SKIP LOCKED za pomocą zapytania JPA, dzięki kombinacji PESSIMISTIC_WRITE LockModeType Określone ustawienie limitu czasu blokady, jak opisano powyżej
  • Utwórz natywne zapytanie SQL tak, jak to zrobiłeś


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liczenie liczby połączonych rzędów w lewym sprzężeniu

  2. Dlaczego podczas tworzenia tego prostego przykładu widoku zmaterializowanego pojawia się błąd ORA-12054?

  3. Czy umieszczenie indeksu w tabeli tymczasowej Oracle jest bezpieczne?

  4. Jak utworzyć zdefiniowaną przez użytkownika zmienną typu danych rekordu w bazie danych Oracle

  5. utwórz napotkany pakiet oracle PLS-00103:Napotkano symbol CREATE