hibernate的in用占位符查不到,直接拼接可以查到

五娃 发布于 2016/09/06 10:42
阅读 965
收藏 0

如 hql:  select xxx from xx where xx.id in (:ids)

Map<String ,obj>.put("ids",xxxx);

查询结果为空,打印的sql也是对的,把参数放进去,在mysql中执行是有结果的。

如果直接拼接hql :"select xxx from xx where xx.id in ("+xxx+")"

这样查询是有结果的,请问为什么会这样啊?

加载中
0
寒情漠漠
寒情漠漠
List时使用setParameterList设置参数
0
milin
milin
ids 替换之后的sql  添加了单引号,认为是一个字符串
小潘潘go
小潘潘go
所以咋个弄呢?
五娃
五娃
不太理解你的意思,我刚刚用StringUtils.join(xxx,",")替换掉我拼成"'1','2','3'"的还是不行,
0
f
freezingsky

JPA 中,是直接 select xxx from xx where xx.id in :ids。

Hibernate应该也是一样的吧,试一下吧。

五娃
五娃
我试了下,in :ids和in (:ids)打印的sql是一样的,还是没结果
0
随便写写的Z先生
随便写写的Z先生

使用HQL的in语句时,传出的是集合或者数组。

List<Integer> ids = new ArrayList<Integer>(); 
ids.add(3); 
ids.add(4); 
ids.add(5); 
select xxx from xx where xx.id in (:ids)

五娃
五娃
貌似不行,把list放进map中是list cannot 转换成string,直接传list是说占位符base-1什么的
0
随便写写的Z先生
随便写写的Z先生

@1099am 

这个使用方式是没问题的,看看你的字段类型和list是否匹配

0
五娃
五娃

引用来自“狂爵”的评论

0
五娃
五娃

引用来自“寒情漠漠”的评论

List时使用setParameterList设置参数
0
五娃
五娃
加了个集合的判断
返回顶部
顶部