簡體   English   中英

Spring Boot + JPA + Hibernate + PostgreSQL pessimistic_read與JPA本機查詢

[英]Spring boot + JPA + Hibernate + PostgreSQL pessimistic_read with JPA native query

我需要從尚未處理的表中返回一個項目ID(在給定的時間可以有多個可用的ID,但我需要為每個請求返回唯一的ID)。

  • 我正在使用JPA本機查詢從數據庫中獲取第一條記錄

     @Lock(LockModeType.PESSIMISTIC_READ) @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="5000")}) @Query(value = "SELECT id FROM item WHERE name->> 'name'=:name AND city->> 'city'=:city LIMIT 1",nativeQuery = true) public String find(@Param("name") String name, @Param("city") String city); 
  • 發布我將狀態更改為使用更新查詢處理的帖子

  • 返回ID

上面的情況引發了一個異常,指出“無效使用鎖”(因為它不支持本機查詢,僅支持Crud操作)。

在競爭條件下,需要使用PESSIMISTIC_READ對SELECT for UPDATE和跳過鎖定行使用本機查詢的幫助。

通過在查詢中添加以下行來解決此問題。

鎖定更新跳過

@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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM