sql >> Databáze >  >> RDS >> Oracle

Vyberte pro aktualizaci přeskočení uzamčené z úrovně JPA

Hibernate poskytuje režim uzamčení UPGRADE_SKIPLOCKED.

Použití JPA a Hibernate k vytvoření „SKIP_LOCKED“ podle Hibernate LockMode dokumentaci, musíte zkombinovat PESSIMISTIC_WRITE JPA LockModeType :

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

a nastavení časového limitu zámku, jako například v persistence.xml pro vaši jednotku perzistence:

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

(Všimněte si, že tento LockMode můžete nakonfigurovat i pro složité dotazy)

SKIP LOCKED není součástí ANSI SQL. Některé RDBMS, jako jsou následující, to poskytují jako specifickou funkci:

Takže s čistým JPA není možné v dotazech zadat "SKIP LOCKED". Jak je zdokumentováno v LockModeType , JPA 2.1 podporuje pouze následující:

  • ŽÁDNÉ
  • OPTIMISTICKÝ
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • ČTĚTE
  • NAPIŠTE

Chcete-li však ve svém dotazu povolit SKIP LOCKED, můžete použít tyto alternativy:

  • Použijte konkrétní funkci implementace JPA, jako je Hibernate LockMode což umožňuje specifikovat SKIP LOCKED prostřednictvím dotazu JPA, díky kombinaci PESSIMISTIC_WRITE LockModeType Specifické nastavení časového limitu zámku, jak je popsáno výše
  • Vytvořte nativní dotaz SQL stejně jako vy


  1. sql platební distribuce

  2. Datamapper ORM-Codeigniter Advance Relationship

  3. Zobrazení historie úloh SQL Server Agent pomocí SSMS

  4. Doctrine QueryBuilder:ManyToOne Relationship, kde se musí shodovat více než jedna dílčí entita