在DAO文件中,通過sessionFactory.getCurrentSession()來獲取會話,報異常:org.hibernate.HibernateException: createQuery is not valid without active transaction。經過實驗,發現將Hibernate的配置文件中的<property name="current_session_context_class">thread</property>屬性去掉就好了。原來"current_session_context_class"屬性的意思是,設置當前會話的上下文環境,如果設置為thread,那么同一線程則共享同一session會話。因此通過getCurrentSession()得到的session,是同一線程上的session,而不是Spring管理的那個能夠自動開啟事務的session。去除掉該屬性就好了