我想使用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本机查询跳过锁定
发布评论