hibernate 批量删除
xtay_myet
2011-11-04
就是我从jsp页面获取到checkbox的值,进行多选,给hibernate时,进行第二次循环时,
Person person = (Person)this.getHibernateTemplate().get(Person.class,id[i]); person是null,第一次是有值的,就是第二次是空,是怎么回事啊!各位看看啊!谢谢! public void deletePersons(String[] id) { for(int i = 0;i < id.length;i++){ Person person = (Person)this.getHibernateTemplate().get(Person.class,id[i]); String ttid = person.getAttid(); Photo ph = new Photo(); ph.setId(ttid); this.getHibernateTemplate().delete(ph); this.getHibernateTemplate().delete(person); } } |
|
shenlan_digo
2011-11-04
Photo ph = new Photo();
ph.setId(ttid); this.getHibernateTemplate().delete(ph); ph是游离态,不是持久化对象,改为: public void deletePersons(String[] id) { for(int i = 0;i < id.length;i++){ Person person = (Person)this.getHibernateTemplate().get(Person.class,id[i]); String ttid = person.getAttid(); Photo ph = (Photo)this.getHibernateTemplate().get(Photo.class,ttid); this.getHibernateTemplate().delete(ph); this.getHibernateTemplate().delete(person); } } 至于你说的第二次person为null,跟踪看你的id数组中的值得到没有,数据库有没对应的数据。 |
|
laoma036912
2012-03-02
你这样效率太低了,每删除一个,要生成一个hql语句。
使用下面的方法,只生成一条hql语句: /** * 按照hql语句批量更新 * delete from Page p where p.id in (?); */ public void batchHandleByHQL(String hql, Object... objects) { Query q=getSession().createQuery(hql); for(int i=0;i<objects.length;i++) { q.setParameter(i, objects[i]); } q.executeUpdate(); } |
|
kuchafangfei
2012-08-08
laoma036912 写道 你这样效率太低了,每删除一个,要生成一个hql语句。
使用下面的方法,只生成一条hql语句: /** * 按照hql语句批量更新 * delete from Page p where p.id in (?); */ public void batchHandleByHQL(String hql, Object... objects) { Query q=getSession().createQuery(hql); for(int i=0;i<objects.length;i++) { q.setParameter(i, objects[i]); } q.executeUpdate(); } 支持楼上的思路,那样效率高很多 |
|
杀客o凹胖
2013-01-25
kuchafangfei 写道 laoma036912 写道 你这样效率太低了,每删除一个,要生成一个hql语句。
使用下面的方法,只生成一条hql语句: /** * 按照hql语句批量更新 * delete from Page p where p.id in (?); */ public void batchHandleByHQL(String hql, Object... objects) { Query q=getSession().createQuery(hql); for(int i=0;i<objects.length;i++) { q.setParameter(i, objects[i]); } q.executeUpdate(); } 支持楼上的思路,那样效率高很多 是啊,hql多直观啊 |