簡體   English   中英

Spring Data JDBC跳過鎖定

[英]Spring Data JDBC skip locked

我正在嘗試使用 Spring Data JDBC 獲取帶有 SKIP LOCKED 修飾符的行鎖。

使用 JPA (Hibernate) 時,您可以通過使用提示@QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value="-2")})來實現

我可以用 Spring Data JDBC 做到這一點嗎?

就像您提到的,在 JPA 世界中,JPA 實現(例如 Hibernate)是理解javax.persistence.lock.timeout並且將(如果方言允許)將SKIP LOCKED應用於查詢的實現。

使用 Spring Data JDBC,您可以獲得 Spring Data 查詢派生的好處,但它最終處理的抽象比 JPA 少得多,並且傾向於更頻繁地使用本機 SQL。 當涉及到諸如SKIP LOCKED之類的東西時,這可能是一個挑戰,它們是非標准的並且取決於所使用的 DBMS。

因此,Spring Data JDBC 中沒有提示或類似概念反映 JPA 之一。 但是,由於 Spring Data JDBC 仍然允許您指定@Query (並且僅使用本機 SQL),您可以利用它來使用SKIP LOCKED

    @Query("SELECT * FROM PERSON WHERE first_name = :firstName FOR UPDATE SKIP LOCKED")
    List<Person> findByFirstNameForUpdateSkipLocked(String firstName);

據我所知,將SKIP LOCKED指定為本機查詢是使用 Spring Data JDBC 完成此任務的唯一方法。

暫無
暫無

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

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