@Override
public <T> void delete(Class<T> entityClass, Object[] entityids) {
if(entityids!=null && entityids.length>0){
StringBuffer jpql = new StringBuffer();
for(int i=0 ;i<entityids.length;i++){
jpql.append("?").append(i+2).append(",");
}
jpql.deleteCharAt(jpql.length()-1);
Query query = em.createQuery("update ProductType o set o.visible=?1 where o.typeid
                  in("+ jpql.toString()+")")
.setParameter(1, false);
for(int i=0 ;i<entityids.length;i++){
query.setParameter(i+2, entityids[i]);
}

query.executeUpdate();
}
}
这段代码主要是  吧 一个  BOOLEAN 的值 设置为 FALSE
下面这句话的  意思  是什么 ?
query.setParameter(i+2, entityids[i]);

解决方案 »

  1.   

    大家看一下啊!
    query.setParameter(i+2, false);
    我觉得 要写 也这样啊  
    上面 为什么这么写
    大家帮帮 忙啊而且  for(int i=0 ;i <entityids.length;i++){
    这个我也觉得应该   entityids.length-1 吧。
      

  2.   

    entityids.length是传进来对象数组的个数啦!
    for(int i=0 ;i <entityids.length;i++){ 是根据数组长度做循环;
    程序作用封装成这样的一条hql语句:
    update ProductType o set o.visible=?1 where o.typeid 
                      in(entityids[0],entityids[1],...,entityids[entityids.length-1]);