我目前正在開發我的專案的搜索和過濾功能。我正在嘗試使用此請求正文檢索資料:
{
"researchers": [
"Jhon Doe"
],
"unit": null,
"agency":null,
"date": null,
"status": null,
"budget": null
}
以下是 ReasearchRepository 中檢索此資料的方法:
@Query("select r from Research r "
"left join r.fundingAgencies fundingAgencies "
"left join r.researchers researchers "
"where (:budgetStart is null or :budgetEnd is null or r.budget between :budgetStart and :budgetEnd )"
"and (:startDate is null or r.startDate >= :startDate) "
"and (:endDate is null or r.endDate <= :endDate) "
"and (:agencyNames is null or fundingAgencies.agencyName in :agencyNames) "
"and (:unitNames is null or r.deliveryUnit.unitName in :unitNames )"
"and (:names is null or researchers.name in :names ) "
"and (:researchStatuses is null or r.researchStatus in :researchStatuses)")
List<Research> findAdvanced( @Param("budgetStart") Double budgetStart,
@Param("budgetEnd") Double budgetEnd,
@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate,
@Param("agencyNames") Collection<String> agencyNames,
@Param("unitNames") Collection<String> unitNames,
@Param("names") Collection<String> names,
@Param("researchStatuses") Collection<ResearchStatus> researchStatuses);
我的問題是當我試圖從請求中的給定值中查找資料時,它回傳一個空串列[],即使它存在于資料庫中。我想要實作的是,如果引數為空,它會忽略查詢中的特定條件,仍然會回傳資料。
我剛剛關注了Baeldung的文章。
我還找到了另一篇關于使用 Criteria API 的文章,但我需要很多時間才能理解。我的專案有點匆忙。
TIA
uj5u.com熱心網友回復:
我似乎是使用規范的好例子。
https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322716.html
