簡體   English   中英

Spring Data (Hibernate) 動態 WHERE 子句

[英]Spring Data (Hibernate) dynamic WHERE clause

我有一個這樣的存儲庫

@Repository
public interface LeadRequestRepository extends PagingAndSortingRepository<LeadRequest, UUID> {

    @Query(value = "SELECT * FROM lead_request WHERE product IN :products AND current_status in :status", nativeQuery = true)
    List<LeadRequest> findLeadRequests(@Param("products") List<String> products, @Param("status") List<String> status);

}

在此查詢中,狀態可以為空或空列表。
在這種情況下,查詢必須返回所有狀態(NEW、APPROVED、REJECTED 等)。 換句話說,查詢必須變成SELECT * FROM lead_request WHERE product IN :products並且沒有status子句。
我也很困惑,因為我使用了IN子句,所以我不能使用 JPA Example API

如何使用 hibernate 和 jpa 實現這一目標?

有兩種選擇:

  1. 您將有兩個 JPQL/本機查詢,並根據空條件調用一個或另一個查詢。
  2. 更好的選擇是使用 JPA 標准查詢。 Spring Data JPA 為稱為Specifications JPA 標准查詢提供了抽象。 在此處查看Spring Data JPA 文檔

暫無
暫無

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

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