2016-02-12 37 views
0

我在使用@Transactional(org.springframework.transaction.annotation)的服務方法從調用DAO層的地方從數據庫中獲取數據。@Transaction at Service層在春天不能在DAO層上工作

不過,我得到以下錯誤

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

sessionFactory.getCurrentSession() 

我已經加入包掃描到不同的文件被其他posts.Still的建議無法得到錯誤。

請幫助。提前一百萬。

以下是我用過的文件。

的applicationContext.xml

<mvc:annotation-driven /> 
    <context:annotation-config/> 
    <context:component-scan base-package="com.BASE_PCKG"></context:component-scan> 

爲spring-servlet.xml

<mvc:annotation-driven /> 
    <context:component-scan base-package="com.BASE_PCKG.SUB_PCKG.web"></context:component-scan> 

的web.xml

... 
<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/applicationContext.xml</param-value> 
    </context-param> 
.... 
<servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring/spring-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

而且我在的applicationContext文件中配置的事務管理器爲:

<bean id="txManager"   class="org.springframework.orm.hibernate4.HibernateTransactionManager" primary="true"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 
    <tx:annotation-driven transaction-manager="txManager"/> 
+0

你有你的類加載器彈簧啓動?你如何配置你的休眠? –

+2

您是否在sessionFactory的配置文件中定義了transactionManager?在配置文件中還包含 Pulkit

+0

如何配置hibernate的上下文?如何配置事務管理器? – AntJavaDev

回答

0

添加@事務上daoImpl類,並添加事務管理器配置文件:

<tx:annotation-driven/> 

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

。另外,服務層需要是Transactional而不是DAO層。 –

+0

在DAO層上添加事務處理正在工作。 –

+0

但這不是必需的。 –