今天项目中用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<String> snameList = Arrays.asList(sname.split(","));
snameList.stream().collect(Collectors.joining("','", "'", "'"));转成 'zhangsan','lisi','wangwu'
再次执行 ok
当然如果按照zhangsan,lisi,wangwu去查询会导致索引失效