我用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查询条件可以为:
之前采用第二种的方式时候走过一些弯路,就是我写成了如下样子
这种?的情况下直接替换了,就变为in("3,4,5")...
而采用文章中形式和in正确方法是in("3","4","5")
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")