[英]GAE - JPA - datanucleus data retrieval error - PESSIMISTIC_READ
[英]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);
發布我將狀態更改為使用更新查詢處理的帖子
上面的情況引發了一個異常,指出“無效使用鎖”(因為它不支持本機查詢,僅支持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.