allId='1012','1013','1014'session.createQuery("delete TbActual tba where tba.relevantID in ("+allId+")"); for (int i = 0; i < list.size(); i++) {
System.out.println("删除商家,ID为:" + list.get(i));
}
session.getTransaction().commit();
session.close();输出结果'1012','1013','1014'
from TbActual tba where tba.relevantID in('1012','1013','1014')
揭阳金壶春专卖店环城店
揭阳兰花酒店
揭阳乐视眼镜商行金元大楼店
删除商家,ID为:com.covics.somewhere.CompanyData.ActualVo@b7ec5d
删除商家,ID为:com.covics.somewhere.CompanyData.ActualVo@fefe3f
删除商家,ID为:com.covics.somewhere.CompanyData.ActualVo@e61a35但是数据库内的确没有删除掉  谁能帮解决下    在线等待

解决方案 »

  1.   

    Hibernate批处理是弱项,建议镶嵌JDBC代码,用batch来做批处理
      

  2.   

    有个哥们遇到过这个问题这里是不是session.flush,是session.evict(entity); 
    还是一句话,要么使用bulk update/delete方式,要么使用操作持久化对象方式,当使用bulk update时,不可避免导致一级缓存的脏读,Hibernate的解决方式仅仅是删除二级缓存。 
    所以通常的方式就是直接操作持久化对象,这要不会引起数据库与缓存的不一致。 参考:http://www.javaeye.com/topic/21640
      

  3.   

    OK了, 我添加了一个excudeUpdate就执行了    
      

  4.   

    这俩天问了俩个问题  一个是批删,一个是有条件的批查,可是没一个满意的回复,我给分其实很简单的,只要你说的东西能让我学到就可以了,在网上看了N多帖子,发现全是delete 表 where age<多少  。这种批删熟悉hibernate的都会,但是带有其他条件的就很难找了