HibernateはUPGRADE_SKIPLOCKEDロックモードを提供します。
JPAとHibernateを使用して、休止状態のLockMode ドキュメントでは、 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は複雑なクエリにも設定できることに注意してください)
SKIPLOCKEDはANSISQLの一部ではありません。次のような一部のRDBMSは、これを特定の機能として提供します。
したがって、純粋なJPAでは、クエリで「SKIPLOCKED」を指定することはできません。実際、 LockModeType 、JPA2.1は以下のみをサポートします。
- なし
- 楽観的
- OPTIMISTIC_FORCE_INCREMENT
- PESSIMISTIC_FORCE_INCREMENT
- PESSIMISTIC_READ
- PESSIMISTIC_WRITE
- 読む
- 書き込み
ただし、クエリでSKIP LOCKEDを有効にするには、次の方法を使用できます。
- 休止状態のLockMode PESSIMISTIC_WRITE の組み合わせのおかげで、JPAクエリを介してSKIPLOCKEDを指定できます。 上記のLockModeTypeロックタイムアウト固有の設定
- 作成したようにネイティブSQLクエリを作成します