hibernate的hql 中in的参数如何设置

我用hibernate写数据库查询的时候一般不建立表关联,一是表之间的关系通常比较复杂,各种关联,导致的性能比较低,二是因为hql比较灵活。所以批量更新的时候需要in关键字,我总结了一下两种

  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")

猜你喜欢

转载自nonobaba.iteye.com/blog/2257944