Parameter with that position [1] did not exist

今天项目中用hibernate遇到下面错误

Parameter with that position [1] did not exist

 

hql查询

Query query=this.GetSession().createQuery("from Stu where SName in (?)", sname);  

当时sname传入的参数值为 zhangsan,lisi,wangwu

这样解析后sql为:from Stu where SName in (zhangsan,lisi,wangwu)

多个逗号隔开就知道问题了,

将sname 解析一下就可以了

List snameList = Arrays.asList(sname.split(","));

snameList.stream().collect(Collectors.joining("','", "'", "'"));转成  'zhangsan','lisi','wangwu'

再次执行 ok

当然如果按照zhangsan,lisi,wangwu去查询会导致索引失效

你可能感兴趣的:(hibernate4)