首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring引导+ JPA + Hibernate +带有JPA原生查询的PostgreSQL pessimistic_read

Spring引导+ JPA + Hibernate +带有JPA原生查询的PostgreSQL pessimistic_read
EN

Stack Overflow用户
提问于 2017-10-05 17:13:28
回答 1查看 823关注 0票数 0

我需要从尚未处理的表中返回一个项id (在给定的时间内,可以有多个可用项,但我需要在每个请求中返回唯一的id )。

  • 我正在使用JPA本机查询从DB获取第一条记录。 @Lock(LockModeType.PESSIMISTIC_READ) @QueryHint({@QueryHint( name = "javax.persistence.lock.timeout",value ="5000")}) @Query(value =“从项目中选择id”,其中名称-> 'name'=:name和city-> 'city'=:city限制1",nativeQuery = true)公共字符串查找(@Param(“名称”)字符串名称,@Param(“城市”)字符串城市);
  • 使用update查询将状态更改为已处理状态的帖子
  • 返回ID

上面的场景抛出一个异常,说明“无效使用锁”(因为它不支持本机查询,只支持crud操作)。

需要帮助使用PESSIMISTIC_READ使用本机查询选择更新和跳过锁定的行在竞赛条件下。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-07 18:08:36

通过在查询中添加以下行解决了这个问题。

的更新跳过锁定。

代码语言:javascript
复制
@Query(value = "SELECT id FROM item WHERE name->> 'name'=:name AND city->> 'city'=:city LIMIT 1 FOR UPDATE SKIP LOCKED",nativeQuery = true)
public String find(@Param("name") String name, @Param("city") String city);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46591318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档