[英]Dynamic where clause for Spring Data JPA native query
我的 Hibernate orm.xml
中有一個相當大的本機查詢。 我不能輕易地將它翻譯成 HQL 或 Criterias,但我想在這個查詢中有一個動態的 where。
似乎 TypedQueries 不是一個好主意,因為 SQL 注入,謂詞不能與本機查詢結合,那么有什么替代方法來創建動態 where 子句?
我必須構建的動態是與范圍( between
)、列表( in
查詢中等)相關的東西。我希望創建一個謂詞並將其注入我的查詢中,但沒有這樣的運氣。
這是我的 Spring 數據 JPA 界面的樣子:
@Query(nativeQuery = true)
fun findNearby(
@Param("latitude") lat: Double,
@Param("longitude") lon: Double,
pageable: Pageable,
@Param("minPopulation") minPop: Int?,
@Param("maxPopulation") maxPop: Int?,
@Param("houseType") type: List<HouseType>?
): Page<AreaSummary>
理想情況下,我想將population
和housetype
成一個 DTO 並將其提供給查詢,但我很樂意考慮任何可行的解決方案。
使用本機查詢,您無能為力來支持動態 where 子句。 您可以做的最好的事情是嘗試調整本機查詢以支持將 null 作為參數值傳遞,但如果您在該表中有大量數據,我強烈建議您不要這樣做,因為過於通用的查詢計划通常會導致非常錯誤的行估計會導致錯誤的物理查詢計划。
IMO 你有兩到三個選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.