springboot +JPA自定義查詢返回部分欄位的返回值型別,用Integer型別作為模糊查詢的條件
阿新 • • 發佈:2018-12-23
今天遇到一個問題記錄下來。
使用的是springboot 2.1.1
jpa連線MySQL資料庫
資料庫表:
我想通過sid的模糊查詢來生成下拉列表。
開始想用jpa提供的一種方法名稱查詢,於是在dao中定義了public List findBySidLike(Integer sid) 方法
但是Integer型別的引數不能在前後新增百分號。把引數改成String型別jpa還不同意,說找不到String型別的sid。鬱悶~
後來使用自定義的SQL查詢語句
@Query(value=“select sid,sname,clazz,……from subject where sid like concat(’%’,?1,’%’)”)
public List myFunction(String sid)
這樣,引數終於可以拼接了。
但是還有問題,報錯說結果集某某型別(jpa返回的型別)不能轉換為List(我要求返回的型別)。
於是又到網上查,說是要再定義一個類來接受結果等等,沒看懂。
後來終於看到不知是哪位大神的記錄,說類似這樣的查詢返回的是List<Map<String,Object>>或List<List>
List<Map<String,Object>> [ { "1":a, "2":b, "3":c }, { "1":a, "2":b, "3":c }, { "1":a, "2":b, "3":c } ] List<List<Object>> [ [a.b.c], [a.b.c], [a.b.c] ]
於是將返回值型別改為List<Map<String,Object>>
終於成功。