您的位置:首页 > 其它

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

2014-04-24 21:07 441 查看
第一次使用hibernate4,通过以前的配置写dao类不能spring封装,可以直接调用hibernate自己的API也就是getCurrentSession();

然后就会出现org.hibernate.HibernateException: No Session found for current thread报错,出现的具体原因我也不懂但解决办法就是:

第一步:applicationContext.xml

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="remove*" propagation="REQUIRED"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>

<aop:config proxy-target-class="true">
<aop:advisor advice-ref="txAdvice" pointcut="execution(* pmk.baseClass.impl.BaseService.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut="execution(* pmk.manage.book.service.impl.*.*(..))" />
</aop:config>

第二步:
在service类每个方法前加上@Transactional

注意:继承的service必须在aop配置写入baseService类,而且baseService也需要声明@Transactional
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐