[英]How to implement long/complex query with spring-data-jpa 2.1
我需要一些關於實現 spring JPA 查詢的建議。 由於輸入長度,我的查詢很復雜。
作為輸入,我有:
我知道這可以通過使用標准 PagingAndSortingRepository 來解決,例如:
Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...)
但看看我的輸入是多長時間,這個解決方案看起來不清楚,我認為具有這么多參數的方法不是一個好的解決方案。 我也在考慮findAll
by Example,但這是支持平等,而不是條件之間。
還有其他選擇嗎?
唯一的方法是使用CriteriaBuilder構建自定義查詢?
派生查詢,即那些從方法名稱派生實際查詢的查詢,對於這種長或復雜的查詢來說是錯誤的工具,因為結果名稱變得不可用。
您應該考慮的替代方案是
使用@Query
注釋中提供的固定查詢: https : @Query
使用命名查詢,您可以在其中提供對實體的查詢: https : //docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.named-queries
使用動態組裝 where 子句的規范: https : //spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
您有以下選項可以做到這一點。 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.