在页面中获得一截字符串如 String  ids="1,2,3,";
然后将其作为参数传入一删除方法中
代码如下:
----------------------------------------------------------------------
           public  void delUseres(String ids)
  {
             String id=ids.substring(0, ids.length()-1)
    Session session=this.getSession();
             String sql="delete from userinfo where id in ("+id+")";
             Query  query=session.createQuery(sql);
             query.executeUpdate();
  }报错
-----------------------------------------------------------------------
这段删除代码报错;
但下面滴一段删除代码可以  不知道有那位大虾可以帮忙指点一下上面滴代码问题吗-----------------------------------------------------------------------
        public  void delUseres(String ids)
  {        String[]  str=ids.split(",");
  for(int i=0;i<str.length;i++)
  {
 int s=new Integer(str[i].toString());
super.getHibernateTemplate().delete((UserInfo)this.getHibernateTemplate().get (UserInfo.class, s));  
  }
}
正确-----------------------------------------------------------------------

解决方案 »

  1.   

    你的参数传的对不对呢,生成的sql语句是什么样子呢
      

  2.   

    好长时间不写了,有点忘了,我记得用原语句的话,应该是session.createSQLQuery(sql)吧
      

  3.   


    String sql="delete from userinfo where id in ("+id+")";
    Query query=session.createQuery(sql);
    就这里啦,你的userinfo是小写。我想应该不是对象吧,你用的是createQuery
    所以你的userinfo应该对象你的entity Bean 也就是UserInfo.hbm.xml这个名称。
    鼠标放在UserInfo上会有提示的。
    如果你要小写可以用createSQLQuery,表示原生态的sql语句。就不是hql了;
      

  4.   

    呵呵。楼主的hibernate还是不熟悉啊。。hql语句写的不是sql语句,而是对对象进行操作的
      

  5.   

    hql 是对 对象进行操作hql: 对象名 属性
    sql:表名   字段
      

  6.   

    hibernate操作的是entity,不是表
      

  7.   

    hql 和sql 有区别吗?   都只是个参数而已
    String sql="delete from userinfo where id in ("+id+")";
    中我那个userinfo 是应该UserInfo  我昨晚写快了(我滴错)   但编码滴时候是UserInfoIBM_hoojo   你真滴是好细心  谢谢了
    -------------------------------
    session.createSQLQuery(sql) -----》这个不太懂也   高手可以解释一下吗?  谢谢
      

  8.   


       忘记说了   userinfo中还有一个集合  那个集合就是关联另外滴一张表滴实体
    因为是多对多嘛   所以在生成滴时候  第三方表没有生成   将两个实体关联起来滴就是那个集合
    当删除userinfo 中滴数据滴时候  第三方中滴数据就自动删除了