<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>我更改了这项配置,还是报错,错误如下:严重: Servlet.service() for servlet spring-dispather threw exception
org.hibernate.HibernateException: No Session found for current thread
at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1041)
at com.avicit.framework.support.dao.impl.AbstractHibernateDao.getSession(AbstractHibernateDao.java:24)
at com.avicit.framework.support.dao.impl.AbstractHibernateDao.createHQLQuery(AbstractHibernateDao.java:121)
at com.avicit.framework.support.dao.impl.AbstractHibernateDao.findPageByHql(AbstractHibernateDao.java:67)
at com.avicit.framework.support.dao.impl.GeneralHibernateDao.find(GeneralHibernateDao.java:19)
at com.avicit.fes.system.simple.service.impl.SimpleServiceImpl.selectSimple(SimpleServiceImpl.java:23)
at com.avicit.fes.system.simple.controller.SimpleController.index(SimpleController.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
求各位大侠赐教!

解决方案 »

  1.   

    在Dao里应该有一个sessionFactory的set方法吧。
    我是用的是javax.annotation.Resource的annotation。
    在Spring配置文件中transactionManager声明下面annotation的配置如下:
    <tx:annotation-driven transaction-manager="transactionManager" />之后在Dao里这样获取sessionFactory: private SessionFactory sessionFactory; public SessionFactory getSessionFactory() {
    return sessionFactory;
    }

    @Resource
    public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
    }
    希望对你有帮助
      

  2.   

    hibernateDao没有注入进去啊,没有hibernateDao这样的bean啊
      

  3.   

    @Component
    public class GeneralHibernateDao extends AbstractHibernateDao {
        public Object get(Class clazz,Serializable id){
            return getSession().get(clazz, id);
        }
        
        public List<?> find(Class clazz,Object... params){
            return this.findPageByHql(buildHQLByClass(clazz), params);
        }
    }
    加注解
      

  4.   

    service 的实现类加了@Component 还是一样报错org.hibernate.HibernateException: No Session found for current thread  啊……
      

  5.   

    加上这个试试
    <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
      

  6.   

    service层缺少一个注解,或者在spring的配置文件中加一个aop的配置,楼主在service类上面加上一个这个试试@transaction
      

  7.   

    这是涉及到一个open session in view的东东
      

  8.   

    我也遇到这个问题,看看这个吧:
    http://blog.csdn.net/wzk527/article/details/8543480
      

  9.   

    spring3 hibernate4 整合 所有方法必须开启事物。。