Hibernate4.1org.hibernate.HibernateException: No Session found for current thread

窗外有个蓝蓝天 发布于 2013/05/03 08:19
阅读 9K+
收藏 2
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://localhost:3306/blog"
p:user="root"
p:password="123"
p:maxPoolSize="40"
p:minPoolSize="1"
p:initialPoolSize="1"
p:maxIdleTime="20"/>


<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="dataSource">
<property name="mappingResources">
<list>
<value>com/blog/domain/User.hbm.xml</value>
<value>com/blog/domain/Article.hbm.xml</value>
<value>com/blog/domain/ArticleType.hbm.xml</value>
<value>com/blog/domain/Comment.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
#开启二级缓存
hibernate.cache.use_second_level_cache=true
#设置二级缓存的提供者
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
</value>
</property>
</bean>
<!-- 配置Hibernate的局部事务代理,使用HibernateTransactionManager类 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory"/>
<!-- 配置事务增强处理Bean,指定事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 所有以get开头的方法时read-only的 -->
<tx:method name="get*" read-only="true" propagation="REQUIRED"/>
<!-- 其它事务使用默认的事务设置 -->
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<bean id="myDaoSupport" p:sessionFactory-ref="sessionFactory" class="com.blog.support.MyDaoSupport"/>
<!-- 配置DAO组件的模板 -->
<bean p:sessionFactory-ref="sessionFactory" lazy-init="true" abstract="true" id="daoTemplate"/>
<bean id="userDao" parent="daoTemplate" class="com.blog.dao.impl.UserDaoImpl"/>
<bean id="articleDao" parent="daoTemplate" class="com.blog.dao.impl.ArticleDaoImpl"/>
<bean id="articleTypeDao" parent="daoTemplate" class="com.blog.dao.impl.ArticleTypeDaoImpl"/>
<bean id="commentDao" parent="daoTemplate" class="com.blog.dao.impl.CommentDaoImpl"/>
<!-- 定义业务逻辑组件模板 -->
<!-- 为之注入DAO组件 -->
<bean id="userTemplate" lazy-init="true" abstract="true"
p:userDao-ref="userDao" 
p:articleDao-ref="articleDao"
p:typeDao-ref="articleTypeDao"
p:commentDao-ref="commentDao" />
<!-- 定义业务逻辑组件,继承业务逻辑组件模板 -->
<bean id="userManager" parent="userTemplate" class="com.blog.service.impl.UserManagerImpl"/>
<aop:config proxy-target-class="true">
<!-- 配置一个切入点,匹配UserManager的所有方法的执行 -->
<aop:pointcut expression="bean(UserManager)" id="userPointCut"/>
<!-- 指定在userpointCut切入点应用txAdvice事务增强处理 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="userPointCut"/>
</aop:config>
</beans>

加载中
0
窗外有个蓝蓝天
窗外有个蓝蓝天
求高手帮忙!!! 我用openSession就可以但是用getCurrentSession()就提示找不到
0
窗外有个蓝蓝天
窗外有个蓝蓝天
我自已解决了
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		p:driverClass="com.mysql.jdbc.Driver"
		p:jdbcUrl="jdbc:mysql://localhost:3306/blog"
		p:user="root"
		p:password="123"
		p:maxPoolSize="40"
		p:minPoolSize="1"
		p:initialPoolSize="1"
		p:maxIdleTime="20"/>
	<bean id="myDaoSupport" p:sessionFactory-ref="sessionFactory" class="com.blog.support.MyDaoSupport"/>
	<!-- 配置DAO组件的模板 -->
	<bean p:sessionFactory-ref="sessionFactory" lazy-init="true" abstract="true" id="daoTemplate"/>
	<bean id="userDao" parent="daoTemplate" class="com.blog.dao.impl.UserDaoImpl"/>
	<bean id="articleDao" parent="daoTemplate" class="com.blog.dao.impl.ArticleDaoImpl"/>
	<bean id="articleTypeDao" parent="daoTemplate" class="com.blog.dao.impl.ArticleTypeDaoImpl"/>
	<bean id="commentDao" parent="daoTemplate" class="com.blog.dao.impl.CommentDaoImpl"/>
	<!-- 定义业务逻辑组件模板 -->
	<!-- 为之注入DAO组件 -->
	<bean id="userTemplate" lazy-init="true" abstract="true"
		p:userDao-ref="userDao" 
		p:articleDao-ref="articleDao"
		p:typeDao-ref="articleTypeDao"
		p:commentDao-ref="commentDao" />
	<!-- 定义业务逻辑组件,继承业务逻辑组件模板 -->
	<bean id="userManager" parent="userTemplate" class="com.blog.service.impl.UserManagerImpl"/>

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
		p:dataSource-ref="dataSource">
		<property name="mappingResources">
			<list>
				<value>com/blog/domain/User.hbm.xml</value>
				<value>com/blog/domain/Article.hbm.xml</value>
				<value>com/blog/domain/ArticleType.hbm.xml</value>
				<value>com/blog/domain/Comment.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<value>
				hibernate.dialect=org.hibernate.dialect.MySQLDialect
				hibernate.hbm2ddl.auto=update
				hibernate.show_sql=true
				hibernate.format_sql=true
				hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
				#开启二级缓存
				hibernate.cache.use_second_level_cache=true
				#设置二级缓存的提供者
				hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
			</value>
		</property>
	</bean>
	<!-- 配置Hibernate的局部事务代理,使用HibernateTransactionManager类 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"
		p:sessionFactory-ref="sessionFactory"/>
	<!-- 配置事务增强处理Bean,指定事务管理器 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<!-- 所有以get开头的方法时read-only的 -->
			<tx:method name="get*" read-only="true" propagation="REQUIRED"/>
			<!-- 其它事务使用默认的事务设置 -->
			<tx:method name="*" propagation="REQUIRED"/>
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<!-- 配置一个切入点,匹配UserManager的所有方法的执行 -->
		<aop:pointcut expression="execution(public * com.blog.service.impl.*.*(..))" id="userPointCut"/>
		<!-- 指定在userpointCut切入点应用txAdvice事务增强处理 -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="userPointCut"/>
	</aop:config>
</beans>
0
窗外有个蓝蓝天
窗外有个蓝蓝天
是切入点的表达式写的不对...
0
窗外有个蓝蓝天
窗外有个蓝蓝天

更正一下 切入点表达式没错主要是bean(UserManager)这个应该是写spring里面bean的id改成userManager就对了

还有这个hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

是不用配的终于解决了

以后学习的路还很长啊


0
看星空的老蚂蚁
看星空的老蚂蚁
hibernate4已经不用hibernatedaosupport了,
窗外有个蓝蓝天
窗外有个蓝蓝天
我这个是bean引用错了
窗外有个蓝蓝天
窗外有个蓝蓝天
.......我知道
0
小草莓
小草莓
在异步线程中使用也会报这个错 No Session found for current thread, 应该是session已经关闭, 有没有人知道怎么异步的情况下,怎么保持session是打开的状态
返回顶部
顶部