@Query("SELECT adv FROM Advocacyadv where (adv.patient.facilityId IN (:facilityIds) or :facilityIds is null) "
" order by adv.createdDate desc ")
public List<Advocacy> search(
@Param("facilityIds") Integer[] facilityIds);
上面的代碼給出了以下錯誤
原因:java.lang.IllegalArgumentException:遇到陣列值引數系結,但期待 [java.lang.Integer (n/a)]
我的搜索可能有也可能沒有搜索引數。如果沒有搜索引數,我希望顯示所有資料。如果有搜索引數,我只需要那些匹配的。如何使用 JPA 完成此任務?
uj5u.com熱心網友回復:
您需要使用串列
Query("SELECT adv FROM Advocacyadv where (adv.patient.facilityId IN (:facilityIds) or :facilityIds is null) "
" order by adv.createdDate desc ")
public List<Advocacy> search(
@Param("facilityIds") List<Integer> facilityIds);
更新:
正確的查詢如下:Query(
"SELECT adv FROM Advocacy adv "
"WHERE (:facilityIds IS NULL OR adv.patient.facilityId IN :facilityIds) "
"ORDER BY adv.createdDate DESC")
public List<Advocacy> search(@Param("facilityIds") List<Integer> facilityIds);
- 如果 facilityIds 為 null,它將回傳所有 Advocacys
- 如果 facilityIds 為空,它將回傳一個空串列
- 否則,它將回傳所有的 Advocacys,其患者的 id 為 facilityIds
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/513438.html
標籤:jpa非法参数异常
