Spring数据JPA本机查询跳过锁定 [英] Spring data JPA native query skip locked
问题描述
我想使用Spring Data JPA在Oracle上执行SKIP LOCKED
查询,所以我尝试了以下操作:
I want to execute a SKIP LOCKED
query on Oracle using Spring Data JPA, so I tried the following:
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query(value = "SELECT * FROM User WHERE ID=?1 FOR UPDATE SKIP LOCKED", nativeQuery = true)
User findOne(UUID id);
我尝试了上述操作,发现生成的查询包含FOR UPDATE
,但不包含SKIP LOCKED
(以下是从日志生成的查询):
I tried the above and found that the generated query contains FOR UPDATE
, but not SKIP LOCKED
(below is the generated query from logs):
select ent0_.column1 as name, ent0_.CREATED_DATE as CREATED_2_33_0_ from TABLE_NAME alias_name where ent0_.column1=? for update
如果我从查询方法中删除@Lock
,则生成的查询甚至没有FOR UPDATE
.
If I remove @Lock
from the query method, the generated query does not even have FOR UPDATE
.
请根据需要建议如何使用FOR UPDATE SKIP LOCKED
生成查询.
Please suggest how I can generate a query with FOR UPDATE SKIP LOCKED
, as required.
推荐答案
添加:
@QueryHints({@ QueryHint(name ="javax.persistence.lock.timeout",值 =-2")})
@QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="-2")})
这篇关于Spring数据JPA本机查询跳过锁定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!