Oracle
 sql >> база данни >  >> RDS >> Oracle

Изберете за пропускане на актуализация, заключена от ниво JPA

Hibernate предоставя режима на заключване UPGRADE_SKIPLOCKED.

Използвайки JPA и Hibernate, за създаване на „SKIP_LOCKED“ според Режим на заключване на хибернация документация, трябва да комбинирате PESSIMISTIC_WRITE JPA LockModeType :

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

и настройката за изчакване за заключване, като например в persistence.xml за вашата единица за постоянство:

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

(Имайте предвид, че можете да конфигурирате този LockMode и за сложна заявка)

SKIP LOCKED не е част от ANSI SQL. Някои RDBMS като следните предоставят това като специфична функция:

Така че с чист JPA не е възможно да се укаже „SKIP LOCKED“ в заявките. Всъщност, както е документирано в LockModeType , JPA 2.1 поддържа само следното:

  • НЯМА
  • ОПТИМИСТИЧЕН
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • ЧЕТЕТЕ
  • ПИШЕ

Въпреки това, за да активирате SKIP LOCKED във вашата заявка, можете да използвате тези алтернативи:

  • Използвайте специфична функция за внедряване на JPA, като например Режим на заключване на хибернация което позволява да се посочи SKIP LOCKED чрез JPA заявка, благодарение на комбинация от PESSIMISTIC_WRITE LockModeType Lock Timeout специфична настройка, както е описано по-горе
  • Създайте собствена SQL заявка, както направихте


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя ojdbc7 към уеб приложението на Java от Gradle?

  2. Използване на Java за свързване към база данни на Oracle

  3. SQL заявка за намиране на редове с поне една от посочените стойности

  4. Възможно ли е да се изведе израз SELECT от PL/SQL блок?

  5. Как да намерите редове код на пакетирани процедури и функции в Oracle