1、in的参数如果已知了,可以直接拼接在后面 如FROM A WHERE A.ID IN (1,2,3,4...)。
2、上面的情况下,通常(1,2,3,4...)都是作为参数传递过来的,可能是数组或者List。
假设List<Integer> a;a里面已经有数据了,则HQL查询条件可以为:
String hql="FROM A WHERE A.ID IN (:ids)"; Query query = getSession().createQuery(hql); query.setParameterList("ids", a);
之前采用第二种的方式时候走过一些弯路,就是我写成了如下样子
String hql="FROM A WHERE A.ID IN (?)"; Query query = getSession().createQuery(hql); query.setParameter(0, a);
这种?的情况下直接替换了,就变为in("3,4,5")...
而采用文章中形式和in正确方法是in("3","4","5")