首先你的sql语句就有错!!!!!!!!!!!!!!!delete Flow from id ------->>>>>>>delete Flow where id ----------------------String range = "1,2,3,4"; String ranges[]=range.split(","); Query q= session.createQuery("delete Flow from id in ( :range )") q.setParameterList("range",ranges); q.executeUpdate(); tx.commit();
String range = "1,2,3,4"; String ranges[]=range.split(","); Query q= session.createQuery("delete Flow where id in ( :range )") q.setParameterList("range",ranges); q.executeUpdate(); tx.commit();
Transaction tx = session.beginTransaction();
try {
String range = "1,2,3,4";
session.createQuery("delete Flow from id in ("+ range +")").executeUpdate();
tx.commit();
}
catch (org.hibernate.HibernateException e) {
tx.rollback();
log.error(this.getClass().toString() + ":" + e.getMessage());
}
finally {
HibernateUtil.closeSession();
}
提交以后,报如下错
java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
org.hibernate.hql.antlr.HqlBaseParser.optionalFromTokenFromClause(HqlBaseParser.java:400)
org.hibernate.hql.antlr.HqlBaseParser.deleteStatement(HqlBaseParser.java:259)
org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:148)
org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:134)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:113)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1602)
com.softbank.flow.FlowLogic.delFlows(FlowLogic.java:614)
com.softbank.flow.FlowAction.execute(FlowAction.java:62)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.softbank.common.LocalEncoding.doFilter(LocalEncoding.java:34)
查询数据库,返回一个List,然后用deleteall方法
首先你的sql语句就有错!!!!!!!!!!!!!!!delete Flow from id ------->>>>>>>delete Flow where id ----------------------String range = "1,2,3,4";
String ranges[]=range.split(",");
Query q= session.createQuery("delete Flow from id in ( :range )")
q.setParameterList("range",ranges);
q.executeUpdate();
tx.commit();
String ranges[]=range.split(",");
Query q= session.createQuery("delete Flow where id in ( :range )")
q.setParameterList("range",ranges);
q.executeUpdate();
tx.commit();
用了批量删除后, 记得执行 session.flush(), session.clear()