谁有没有删除hibernate一条记录的好点的方法.我对现有的方法受够了.

太笨重了。需要删除一条记录需要先查出该对象才能够remove。
我需要删除页面上选中的n条记录。就要查询n次。感觉还没有jdbc效率高。
我现在编写的系统采用了hibernate,srping,webwork,需要在现有的框架下添加一个删除功能,但是我又布想写hql。
写了段代码报错。
arr_id是页面上获得来的一个list,里面是要删除记录的id号。
news是一个news对象。存放新闻。

for(int i=0;i<arr_id.size();i++){
news=(News)verifyCodeDao.load(News.class, (String)arr_id.get(i));//查询记录
verifyCodeDao.remove(news);//移除记录 String stt=arr_id.get(i).toString();
System.out.print(stt);
}

不知道怎么搞了。有兄弟帮有空帮看下拉。
[505 byte] By [fangtaohbjjxy-想学单片机] at [2008-4-9]
# 1
load(News.class, (String)arr_id.get(i))
可能是这里错误;
load方法必须取到主键后才不会报错,
看看arr_id.get(i)是不是没取到值
badiwd1216 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 2
用find得到一个list,然后再deleteAll这个list就可以了。
# 3
用Hibernate 3吗 ??? so easy !!

public int delNews(final List arr_id) {
return ( (Integer)this.getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws SQLException,
HibernateException {
Query q = session.createQuery(
"delete net.csdn.News where arrid in (:ids)");
q.setParameterList("ids", arr_id);
return new Integer(q.executeUpdate());
}
})).intValue();
}

pigo at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 4
我debug了下,(String)arr_id.get(i)取到值了
在load的时候报错,没有load到值,查到的值是空的。昏
# 5
news=(News)verifyCodeDao.getObject(News.class, (String)arr_id.get(i));//查询记录
使用getObject()方法,或者 直接给一个id值测试一下了
yesjoy-卫卫 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 6
不要用load,用get..
get会直接执行SQL,load会从缓存中取.
wangx1949 at 2007-10-22 > top of Msdn China Tech,Java,框架、开源...
# 7
我get,load 都不行,最后搞了条hql搞定了。昏

public List getNewsList(final int num) {
return (List) getHibernateTemplate().execute( new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String hql = "FROM News n1 order by id desc" ;
Query query = session.createQuery( hql );
query.setMaxResults( num ) ;
List list = query.list();
if ( list.size() > 0 ) {
return list;
} else {
return null;
}
}
});

}