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>>
终于成功。

猜你喜欢

转载自blog.csdn.net/weixin_41698864/article/details/84930108