关于hibernate批量删除的问题,在线等,急

shangezi 2009-03-16 10:30:15
我想对一个表的很多记录批量删除,是根据前台传过来的ID来删,代码如下:



public List findListByHql(String deletelist[]){
List list = new ArrayList();
for(int i=0;i<deletelist.length;i++){
String hql="from AgentContact ac where ac.id='"+deletelist[i]+"'";
Query query=this.getQuery(hql);
list.add(query.list());
}
return list;
}

public void deleteContact(String deletelist[]) throws AppException {
List list = this.findListByHql(deletelist);
this.getHibernateTemplate().deleteAll(list);
}


是根据deletelist这个数组里面的ID来删除,但我这样写会报错,因为对SSH不熟,怎么做呢,请大家指点一下,下面是错误信息

exception

javax.servlet.ServletException: Unknown entity: java.util.ArrayList; nested exception is org.hibernate.MappingException: Unknown entity: java.util.ArrayList
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: java.util.ArrayList; nested exception is org.hibernate.MappingException: Unknown entity: java.util.ArrayList
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:668)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:408)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367)
org.springframework.orm.hibernate3.HibernateTemplate.deleteAll(HibernateTemplate.java:787)
com.fordays.fdpay.agent.dao.AgentDAOImpl.deleteContact(AgentDAOImpl.java:143)
com.fordays.fdpay.agent.biz.AgentBizImpl.deleteContact(AgentBizImpl.java:107)
com.fordays.fdpay.agent.action.AgentListAction.deleteContact(AgentListAction.java:100)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
com.neza.base.BaseAction.execute(BaseAction.java:25)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause
...全文
1111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang380 2009-03-17
  • 打赏
  • 举报
回复
List list = new ArrayList();
for(int index = 0;index < id.length;index++){
TNindustry dustry = new TNindustry();
dustry.setNclassid(Long.valueOf(id[index]));
list.add(dustry);
}
getHibernateTemplate().deleteAll(list);
}

传进一个数组id,用hibernate的deleteall方法进行批量删除
shangezi 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mousetsun 的回复:]
List <AgentContact> list = new ArrayList <AgentContact>();
list 里面放对象AgentContact的list 把主键放进去.
可以批量删除
this.getHibernateTemplate().deleteAll(list);
[/Quote]

是的,是我忘记把BEAN放进去了,谢谢大家回复,马上给分
Sou2012 2009-03-16
  • 打赏
  • 举报
回复
放个LIST进去,DELETEALL
Jacky_Zhu_1983 2009-03-16
  • 打赏
  • 举报
回复
List<AgentContact> list = new ArrayList<AgentContact>();
list 里面放对象AgentContact的list 把主键放进去.
可以批量删除
this.getHibernateTemplate().deleteAll(list);
lianyongqing 2009-03-16
  • 打赏
  • 举报
回复
deleteAll()里面写的是bean吧?
循环list试一试
zhoushaolan 2009-03-16
  • 打赏
  • 举报
回复
直接删除吧,批量删除最好绕过Hibernate,用JDBC删除.
但现在问题是都有错误..
Query query=this.getQuery(hql);
里面这么写滴?
vampireallen 2009-03-16
  • 打赏
  • 举报
回复
还有关于这个pojo的映射文件也发一下
vampireallen 2009-03-16
  • 打赏
  • 举报
回复
把你的applicationContext.xml中关于sessionFactory的配置发一下看看,
尤其是mappingDirectoryLocations或者mappingLocations

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧