簡體   English   中英

如何使用 spring-data-jpa 2.1 實現長/復雜查詢

[英]How to implement long/complex query with spring-data-jpa 2.1

我需要一些關於實現 spring JPA 查詢的建議。 由於輸入長度,我的查詢很復雜。
作為輸入,我有:

  • 15 條件 - 如果不為空則檢查相等性;
  • 2 條件 - 檢查 if not null
  • 此外,輸出必須是可分頁的。

我知道這可以通過使用標准 PagingAndSortingRepository 來解決,例如:

Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...) 

但看看我的輸入是多長時間,這個解決方案看起來不清楚,我認為具有這么多參數的方法不是一個好的解決方案。 我也在考慮findAll by Example,但這是支持平等,而不是條件之間。

還有其他選擇嗎?
唯一的方法是使用CriteriaBuilder構建自定義查詢?

派生查詢,即那些從方法名稱派生實際查詢的查詢,對於這種長或復雜的查詢來說是錯誤的工具,因為結果名稱變得不可用。

您應該考慮的替代方案是

您有以下選項可以做到這一點。 1) 使用 hql ,因為必須將所有表映射為 jpa 實體 2) 是使用本機查詢,這里的缺點是它會影響應用程序的可移植性,但是如果您確定您的應用程序不會運行要遷移到任何其他數據庫,那么您可以使用此 3) 是使用標准構建器

Edit-> 發現我們的@Query 可以同時用於 SQL 和 JPQL 來執行。

請按照以下鏈接了解更多信息

https://www.baeldung.com/spring-data-jpa-query

在一些 spring 開發人員認證書籍中也使用 Query。

希望有幫助

暫無
暫無

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

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