1. 程式人生 > >springboot +JPA自定義查詢返回部分欄位的返回值型別,用Integer型別作為模糊查詢的條件

springboot +JPA自定義查詢返回部分欄位的返回值型別,用Integer型別作為模糊查詢的條件

今天遇到一個問題記錄下來。
使用的是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>>
終於成功。