Transaction tr=session.beginTransaction();Session session = sf.openSession(); 
tx = session.beginTransaction(); 
Query q = session.createQuery(hql);tr.commit();
这样应该就可以了 

解决方案 »

  1.   

    应该是HQL语句的问题把 
    你换个写法,用参数的形式写一下试试
      

  2.   

    按照楼上修改后,到可以删除数据库中的项,但是控制台显示异常错误:
    Not supported for DML operations这是什么原因呢,所有错误信息:
    org.hibernate.HibernateException: Not supported for DML operations
    at org.hibernate.hql.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:229)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:270)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
    at com.adk.DAOFactory.deleteData(DAOFactory.java:86)
    at com.adk.struts.action.DeleteAction.execute(DeleteAction.java:55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
    at java.lang.Thread.run(Thread.java:595)
      

  3.   

    query不是用来查询用的嘛,这样一来你都没有用到session里面的删除的方法。
    你可以用QBC来处理。
      

  4.   

    String strsql = "delete from TPrintPaper where id = ?";

    SessionFactory sf = null;
    Session session = null;
    Transaction tx = null;

    try
    {
    sf = printPaperDAO.getSessionFactory();
    session = sf.openSession();
    tx = session.beginTransaction();
    Query query = session.createQuery(strsql);
    query.setLong(0, lngId);
    query.executeUpdate();
    tx.commit();      
    }
    catch(Exception e)
    {
    tx.rollback();
    e.printStackTrace();
    return false;
    }
    finally
    {
    if( session != null && session.isOpen() )
    session.close();

    if( sf != null && !sf.isClosed() )
    sf.close();
    }
      

  5.   

    String hql = "delete from com.adk.vo.Delete where name='"+ name + "'"; 
    ;改成String hql = "delete from Delete where name=?";