报错如图:
hibernate中批量操作使用in 关键字时,in (:param) 为一个集合,去setParameter的时候需要使用setParameterList。
例如批量update操作:
String hql = "update model1 set age=:age where name in (:names)";
org.hibernate.Query query = getSession().createQuery(hql);
query.setParameterList("names", names);
query.setParameter("age", age);
return query.executeUpdate();
如果names也使用setParameter则会报上面的错。
原因:因为hibernate对于非集合与集合都有特定的解析器,如果集合选择了非集合的解析器,则无法转换。