请教各位。我以前用过hiberante,后来工作3年都用Ibatis。Hibernate已经发展到3.2以后了。现在项目是3.2。delete方法如何封装好?之前hiberante2.5的多个删除是delete(String hql)。这个在3.2不在了吧?现在3.2版本要删除多个对象怎么做?用session.createQuery? 
 谢谢!

解决方案 »

  1.   

    执行多个delete比较好....
    放到一个commit中提交就是了
      

  2.   

    我刚看了下 ,大多推荐用CreateQuery这个方法去删除。说是直接删除效率很低。因为hibernate要先查。 我现在的想法是这样 做成delte(Class class,String fieldname,String fieldValue)这样的方法。可以避免直接传HQL语句。能不能帮我封装下。我Hibernate不熟悉。。
      

  3.   

    getHibernateTemplate().deleteAll(List)
      

  4.   

    传 HQL 不好么? 删除和修改可以放一起啊,都是执行 executeUpdate();方法;如果你真想把删除单独拎出来
    public Integer delte(Class myClass,String fieldname,String fieldValue){
        Session session = getSession();
        String hql = "DELETE FROM " + myClass.getName() " c Where CHARINDEX(CAST(c."+fieldname+" AS string), ?)>0";
        Query query = session.createQuery(hql);    query.setParameter(1, fieldValue);   // 忘了索引是从几开始的了,不知道索引对不对    Integer result = query.executeUpdate();
        session.close();
        return (Integer)result;
    }调用 delte(MyClass.class, "id", "1,2,3,4,");
    主键随便你是 自定义还是自增长都可以,主键编号用个符号分隔一下就好
      

  5.   

    试试我写的语句吧,最后的那个返回值可以不用强转
    还有就是我写的这个是 和Spring 集成的
      

  6.   

    恩。你这个就是我想要的。只不过我希望调用hiberanate封装程度稍高一些的方法。如果没有,用你这个也可以了。事实上我也已经在用了。。区别是我用的是createSqlQuery
      

  7.   


    getHibernateTemplate().deleteAll(List)
    使用这中方法把,它可以一次删除多条数据
      

  8.   

    delete(serializable... ids){
     for(){
       遍历ids,执行删除。
      }
    }