【发布时间】:2019-02-03 02:38:18
【问题描述】:
我正在尝试使用 Spring Data JPA (2.1) 和 Hibernate 在 PostgreSQL 上执行 SKIP LOCKED 查询。查询如下所示:
@Lock(LockModeType.PESSIMISTIC_WRITE)
@QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="-2")})
List<Obj> findByEntityAndStatus(Entity entity, Status status);
根据Spring data JPA native query skip locked 和Select for update skip locked from JPA level 它应该可以工作,但生成的查询只选择更新而不跳过锁定的行。
生成的查询:
Hibernate:选择 obj0_.id 作为 id1_5_,obj0_.name 作为 name6_5_,obj0_.entity_id 作为 entity10_5_,obj0_.status 作为 status8_5_ 从 objs obj0_ 左外部连接实体 entity1_ on obj0_.entity_id=entity1_.id 其中 entity1_.id= ?和 obj0_.status=?用于更新 obj0_
我错过了什么?
【问题讨论】:
-
从那以后您找到解决问题的方法了吗? ^^'
标签: spring postgresql hibernate jpa