Я пытаюсь выполнить запрос SKIP LOCKED на PostgreSQL, используя Spring Data JPA (2.1) и Hibernate. Запрос выглядит так:
@Lock(LockModeType.PESSIMISTIC_WRITE)
@QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="-2")})
List<Obj> findByEntityAndStatus(Entity entity, Status status);
Согласно Пропущен собственный запрос данных JPA, заблокированный и Выберите для обновления, заблокированный для пропуска с уровня JPA , он должен работать, но сгенерированный запрос выбирает только обновление, не пропуская заблокированные строки.
Сгенерированный запрос:
Hibernate: выберите obj0_.id в качестве id1_5_, obj0_.name в качестве имени6_5_, obj0_.entity_id в качестве entity10_5_, obj0_.status в качестве status8_5_ из objs obj0_ левого внешнего объекта entity__ на obj0_.entity_id = entity1_id.id ? и obj0_.status =? для обновления obj0_
Чего мне не хватает?