dao.CountTDAO.update(CountTDAO.java:21) 
我觉得是你程序的问题。

解决方案 »

  1.   

    后来看了Tomcat的日志,发现有以下错误
    WARN [http-80-Processor22] (JDBCExceptionReporter.java:77) - SQL Error: 17008, SQLState: null
    ERROR [http-80-Processor22] (JDBCExceptionReporter.java:78) - 关闭的连接
    ERROR [http-80-Processor22] (StandardWrapperValve.java:253) - Servlet.service() for servlet jsp threw exception
    org.hibernate.exception.GenericJDBCException: could not execute query
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    at org.hibernate.loader.Loader.doList(Loader.java:2214)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
    at org.hibernate.loader.Loader.list(Loader.java:2090)
    at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
    at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    at dao.ContentTDAO.findbyDemand(ContentTDAO.java:193)
    at dao.ContentTDAO.findViewByDemand(ContentTDAO.java:175)
    at org.apache.jsp.impdoc_jsp._jspService(impdoc_jsp.java:130)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    Caused by: java.sql.SQLException: 关闭的连接
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
    at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:982)
    at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:889)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:415)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1538)
    at org.hibernate.loader.Loader.doQuery(Loader.java:661)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.doList(Loader.java:2211)
    ... 29 more可以肯定不是dao.ContentTDAO的问题,因为别的类也会有这种错误,我只是摘了日志的部分贴了出来。
    下面是我的hibernate建立连接的类和类ContentTDAO,大家帮忙看看有没有什么问题。
    public class Base {       private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
        private  static Configuration configuration = new Configuration();
        private static org.hibernate.SessionFactory sessionFactory;
        private static String configFile = CONFIG_FILE_LOCATION;    private Base() {
        }

        public static Session getSession() throws HibernateException {
            Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) {
    if (sessionFactory == null) {
    rebuildSessionFactory();
    }
    session = (sessionFactory != null) ? sessionFactory.openSession()
    : null;
    threadLocal.set(session);
    }        return session;
        } public static void rebuildSessionFactory() {
    try {
    configuration.configure(configFile);
    sessionFactory = configuration.buildSessionFactory();
    } catch (Exception e) {
    System.err
    .println("%%%% Error Creating SessionFactory %%%%");
    e.printStackTrace();
    }
    }
        public static void closeSession() throws HibernateException {
            Session session = (Session) threadLocal.get();
            threadLocal.set(null);        if (session != null) {
                session.close();
            }
        }
    public static void setConfigFile(String configFile) {
    Base.configFile = configFile;
    sessionFactory = null;
    }
    public static Configuration getConfiguration() {
    return configuration;
    }}public class ContentTDAO {
    public void save(ContentT content) { Session session = Base.getSession();
    Transaction tran = session.beginTransaction();
    session.save(content);
    try {
    tran.commit();
    } catch (Exception e) {
    if (tran != null) {
    tran.rollback();
    }
    } finally {
    session.close();
    }
    } public void delete(ContentT content) { Session session = Base.getSession();
    Transaction tran = session.beginTransaction();
    session.delete(content);
    try {
    tran.commit();
    } catch (Exception e) {
    tran.rollback();
    } finally {
    session.close();
    }
    } public List findbyColumnId(Long id) {
    return this.findbyProperty("columnid", id);
    } public List findbyProperty(String property, Object value) { Session session = Base.getSession();
    try {
    Query query = session.createQuery("from ContentT as c where c."
    + property + "=" + value);
    List list1 = query.list(); return list1;
    } finally {
    session.close();
    }
    } public void update(ContentT content) { Session session = Base.getSession();
    Transaction tran = session.beginTransaction();
    session.update(content);
    try {
    tran.commit();
    } catch (Exception e) {
    tran.rollback();
    } finally {
    session.close();
    }
    } public ContentT findbyId(Long id) { Session session = Base.getSession();
    try {
    Iterator it = session.createQuery(
    "from ContentT as c where c.contentid=" + id).iterate();
    if (it.hasNext()) {
    ContentT con = (ContentT) it.next();
    return con;
    } else
    return null;
    } finally {
    session.close();
    }
    }
    public List findbyExample(ContentT example) { Session session = Base.getSession();
    try {
    Criteria criteria = session.createCriteria(ContentT.class);
    criteria.add(Example.create(example));
    criteria.addOrder(Order.desc("createtime"));
    List list1 = criteria.list();
    return list1;
    } finally {
    session.close();
    } }
    public int getCount(ContentT exp) {
    return findbyExample(exp).size();
    }

    }
      

  2.   

    Session session = Base.getSession(); 
    这句话Base.getSession(); 中base的定义和getSession()方法贴上来。
    按错误说是你,在执行语句前,先关闭了连接,所以会报could not execute query 错,你在检查一下。
    应该是你程序写的有问题。还有件事,你写这个程序的时候没测试吗?另外,是每次都这样,还是有时会抱错。
    我现在也在用oracle9怎么没见到。
      

  3.   

    我有时也会出现这个问题,我连接的是MySQL,跟楼主说的情况几乎一样,也是正待解决异常
      

  4.   

    问题差不多,我的在HQL查询器里也报这个错误