Spring3.1整合Hibnerte4.1无法获取session错误,求指教!

问题描述

spring的配置文件<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><beanid="c3p0dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"><propertyname="driverClass"value="${jdbc.driverClassName}"/><propertyname="jdbcUrl"value="${jdbc.url}"/><propertyname="user"value="${jdbc.username}"/><propertyname="password"value="${jdbc.password}"/><!--初始化时获取的连接数--><propertyname="initialPoolSize"value="${jdbc.initialPoolSize}"/><!--连接池中保留的最小连接数。--><propertyname="minPoolSize"value="${jdbc.minPoolSize}"/><!--连接池中保留的最大连接数。--><propertyname="maxPoolSize"value="${jdbc.maxPoolSize}"/><!--最大空闲时间,60秒内未使用则连接被丢弃。--><propertyname="maxIdleTime"value="${jdbc.maxIdleTime}"/><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。--><propertyname="acquireIncrement"value="${jdbc.acquireIncrement}"/><!--每60秒检查所有连接池中的空闲连接。--><propertyname="idleConnectionTestPeriod"value="${jdbc.idleConnectionTestPeriod}"/></bean><beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><propertyname="dataSource"ref="c3p0dataSource"/><propertyname="hibernateProperties"><props><propkey="hibernate.dialect"><!--数据库方言oracle11g仍然采用10g的org.hibernate.dialect.Oracle10gDialect--><!--目前采用mysql数据库,以后采用oralce11g-->org.hibernate.dialect.MySQLDialect</prop><propkey="hibernate.show_sql">true</prop><propkey="hibernate.format_sql">true</prop><propkey="hibernate.hbm2ddl.auto">update</prop><propkey="hibernate.connection.release_mode">after_statement</prop><propkey="hibernate.current_session_context_class">thread</prop><propkey="hibernate.cache.use_second_level_cache">true</prop><propkey="hibernate.cache.use_query_cache">true</prop><propkey="hibernate.cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</prop><propkey="hibernate.ehcache_config_file">com/avicit/resource/ehcache.xml</prop></props></property><propertyname="packagesToScan"value="com.avicit.fes.**.domain"/></bean><beanid="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"/></bean><tx:adviceid="txAdvice"transaction-manager="transactionManager"><tx:attributes><tx:methodname="*"propagation="REQUIRED"read-only="true"/><tx:methodname="do*"propagation="REQUIRED"/></tx:attributes></tx:advice><aop:config><aop:advisoradvice-ref="txAdvice"pointcut="execution(*com.avicit..service..*.*(..))"/></aop:config><aop:aspectj-autoproxyproxy-target-class="true"/></beans>

service中的方法:@AutowiredprivateGeneralHibernateDaohibernateDao;@OverridepublicvoidselectSimple(){logger.debug(hibernateDao);hibernateDao.find(SimpleController.class);}

DAO中的方法publicabstractclassAbstractHibernateDao<T,ID>implementsHibernateDao<T,ID>{@AutowiredprivateSessionFactorysessionFactory;protectedSessiongetSession(){returnsessionFactory.getCurrentSession();}}publicclassGeneralHibernateDaoextendsAbstractHibernateDao{publicObjectget(Classclazz,Serializableid){returngetSession().get(clazz,id);}publicList<?>find(Classclazz,Object...params){returnthis.findPageByHql(buildHQLByClass(clazz),params);}}

调用出现的错误信息:org.hibernate.HibernateException:createQueryisnotvalidwithoutactivetransactionatorg.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:348)at$Proxy14.createQuery(UnknownSource)atcom.avicit.framework.support.dao.impl.AbstractHibernateDao.createHQLQuery(AbstractHibernateDao.java:121)atcom.avicit.framework.support.dao.impl.AbstractHibernateDao.findPageByHql(AbstractHibernateDao.java:67)atcom.avicit.framework.support.dao.impl.GeneralHibernateDao.find(GeneralHibernateDao.java:19)atcom.avicit.fes.system.simple.service.impl.SimpleServiceImpl.selectSimple(SimpleServiceImpl.java:23)atcom.avicit.fes.system.simple.controller.SimpleController.index(SimpleController.java:32)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atorg.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:690)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:803)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)atorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)atjava.lang.Thread.run(Thread.java:619)

解决方案

解决方案二:
<propkey="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>

我更改了这项配置,还是报错,错误如下:严重:Servlet.service()forservletspring-dispatherthrewexceptionorg.hibernate.HibernateException:NoSessionfoundforcurrentthreadatorg.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)atorg.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1041)atcom.avicit.framework.support.dao.impl.AbstractHibernateDao.getSession(AbstractHibernateDao.java:24)atcom.avicit.framework.support.dao.impl.AbstractHibernateDao.createHQLQuery(AbstractHibernateDao.java:121)atcom.avicit.framework.support.dao.impl.AbstractHibernateDao.findPageByHql(AbstractHibernateDao.java:67)atcom.avicit.framework.support.dao.impl.GeneralHibernateDao.find(GeneralHibernateDao.java:19)atcom.avicit.fes.system.simple.service.impl.SimpleServiceImpl.selectSimple(SimpleServiceImpl.java:23)atcom.avicit.fes.system.simple.controller.SimpleController.index(SimpleController.java:32)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atorg.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:690)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:803)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)atorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)atjava.lang.Thread.run(Thread.java:619)

求各位大侠赐教!
解决方案三:
大哥我也在找这个问题,同求!
解决方案四:
路过帮顶,hibernate都出到4了啊
解决方案五:
mark..我也遇到这个问题了
解决方案六:
在Dao里应该有一个sessionFactory的set方法吧。我是用的是javax.annotation.Resource的annotation。在Spring配置文件中transactionManager声明下面annotation的配置如下:<tx:annotation-driventransaction-manager="transactionManager"/>

之后在Dao里这样获取sessionFactory:privateSessionFactorysessionFactory;publicSessionFactorygetSessionFactory(){returnsessionFactory;}@ResourcepublicvoidsetSessionFactory(SessionFactorysessionFactory){this.sessionFactory=sessionFactory;}

希望对你有帮助
解决方案七:
hibernateDao没有注入进去啊,没有hibernateDao这样的bean啊
解决方案八:
@ComponentpublicclassGeneralHibernateDaoextendsAbstractHibernateDao{publicObjectget(Classclazz,Serializableid){returngetSession().get(clazz,id);}publicList<?>find(Classclazz,Object...params){returnthis.findPageByHql(buildHQLByClass(clazz),params);}}加注解
解决方案九:
service的实现类加了@Component还是一样报错org.hibernate.HibernateException:NoSessionfoundforcurrentthread啊……
解决方案十:
我也是这个问题,求教啊
解决方案十一:
帮顶,请教....
解决方案十二:
加上这个试试<tx:methodname="get*"propagation="REQUIRED"read-only="true"/>

解决方案十三:
引用4楼nijimin100的回复:

mark..我也遇到这个问题了

fuck,我没遇到这个问题
解决方案十四:
service层缺少一个注解,或者在spring的配置文件中加一个aop的配置,楼主在service类上面加上一个这个试试@transaction
解决方案十五:
这是涉及到一个opensessioninview的东东
解决方案:之前也遇上这个问题,执行的类要和切入点一致才行
解决方案:好久没用过ssh了,帮顶
其他方案:
http://blog.csdn.net/wzk527/article/details/8543480
解决方案:spring3hibernate4整合所有方法必须开启事物。。

时间: 2024-08-04 08:14:48

Spring3.1整合Hibnerte4.1无法获取session错误,求指教!的相关文章

spring-Spring整合hibernate4时出现no session错误

问题描述 Spring整合hibernate4时出现no session错误 首先将eclipse抛出的错误贴出来: 严重: Servlet.service() for servlet [springDispatcherServlet] in context with path [/VideoMngSys] threw exception [Request processing failed; nested exception is org.hibernate.HibernateExceptio

spring mvc中 用velocity 模板做视图技术 无法获取session值

问题描述 在controller中是@RequestMapping("/testview")publicStringvelocityTest(HttpSessionsession){session.setAttribute("pp","123");return"testvelocity";然后再vm中$session.getAttribute("pp")却无法获取session值求大虾们帮帮忙

spring3.2+hibernate4.2 整合 spring security报No Session found for current thread

问题描述 public class SpringSecurityMetaDataSource implements FilterInvocationSecurityMetadataSource {//@Resource(name = "resourceDao")private ResourceDao resourceDao;private static Map<String, Collection<ConfigAttribute>> resourceMap =

spring事务-hibernate4+spring中获取session

问题描述 hibernate4+spring中获取session 请问如果某个方法没有在spring中配置事务,比如查询的方法,那么在这个方法中能不能用getCurrentSession方法获取session? 解决方案 Hibernate4获取sessionSpring中关于hibernate的sessionspring3+hibernate4配置事务管理以及session获取问题. 解决方案二: 求大神解答 0.0 解决方案三: 如果 你不getCurrentSession 或者openSe

javaweb-在ssh 中 用ServletActionContext获取session时启动报错

问题描述 在ssh 中 用ServletActionContext获取session时启动报错 ServletActionContext.getRequest().getSession(); 怎么才能在启动的时候就有ServletActionContext,而不用在ActionSupport处理请求时在获取 解决方案 是报空指针吗? 没有请求时 ServletActionContext.getRequest() 为null 解决方案二: http://blog.csdn.net/suncaoyo

jsp 获取session中数据

问题描述 jsp 获取session中数据 后台: HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); request.getSession().setAttribute("XIAOJD-USER", user); jsp页面: <% OrgUser user=(OrgUser)session.getA

getsession()-ServletActionContext和ActionContext获取session的区别

问题描述 ServletActionContext和ActionContext获取session的区别 各位大神们ServletActionContext.getRequest().getSession().setAttribute(key value); 和ActionContext.getContext().getSession().put(key value);有什么区别呢,越详细越好 解决方案 我们知道struts2接受客户端请求,在Action中进行处理后,将视图结果返回.struts

急求,散分一百,在线等,如何获取SESSION?

问题描述 一个请求,调用了类A,A又调用B,B又调用C.最后被调用的假设是Z的一个方法.我如何在Z的方法中,获取到session呢?前提是,Z的这个方法没有REQUEST参数,而且也不可能加上了.有办法吗,谢谢,紧急在线等. 解决方案 解决方案二:可以给所有的方法都加上HttpServletRequestrequest这个参数,这样不就可以取到?解决方案三:你可以继承有request的类,如A类试试看解决方案四:引用1楼zxingchao2009的回复: 可以给所有的方法都加上HttpServl

.net 获取session进行简单的数据登录验证问题?

问题描述 .net 获取session进行简单的数据登录验证问题? 设计包含一个包含Login.aspx和Welcome.aspx两个页面的网站.要求用户登录界面如下图,输入合法的用户名和密码后才能打开Welcome.aspx页面,此时页面中显示用户名及欢迎信息.如果用户级别是admin,页面中显示"管理所有用户"和"修改个人信息"链接按钮,如果用户级别为normal页面中只显示"修改个人信息"链接按钮. [要求]: 1. 合法用户名和密码,自己