问题是出在 beginTransaction 上面的,可就是不知道该怎么改.

解决方案 »

  1.   

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import net.sf.hibernate.*;
    import net.sf.hibernate.cfg.*;public class HibernateBase {    private static Log log = LogFactory.getLog(HibernateBase.class);    private static final SessionFactory sessionFactory;    static {
            try {
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                log.error("Initial SessionFactory creation failed.", ex);
                ex.printStackTrace();
                throw new ExceptionInInitializerError(ex);
            }
        }    public static final ThreadLocal session = new ThreadLocal();    public static Session currentSession() throws HibernateException {
            Session s = (Session) session.get();
            if (s == null) {
                s = sessionFactory.openSession();
                session.set(s);
            }
            return s;
        }    public static void closeSession() throws HibernateException {
            Session s = (Session) session.get();
            session.set(null);
            if (s != null)
                s.close();
        }
    }
    用下面的方法调用:
    public Iterator getAllCats() throws HibernateException {
            Session session = HibernateBase.currentSession();
            Transaction tx= (Transaction)session.beginTransaction(); // 运行时报这行错
            String queryString = "select cats from Cat as cats";
            Query query = session.createQuery(queryString);
            Iterator it= query.iterate();
            tx.commit();
            closeSession();        return it;
        }