2014-03-24 51 views
0

我收到以下錯誤注入自動裝配依賴項失敗;嵌套的例外是org.springframework.beans.factory.BeanCreationException如下:SessionFactory

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleDAOImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.quad.dao.RoleDAOImpl.sessionFactory; nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider; 

我在MVC-調度-servlet.xml中SessionFactory的配置是

<bean id="sessionFactory class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> </props> </property> </bean> 

我使用SessionFactory的在RoleDAOImpl

我全MVC-調度-servlet.xml中是

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<context:component-scan base-package="com.quad.controller" /> 
<context:component-scan base-package="com.quad.dao" /> 
<context:component-scan base-package="com.quad.entity" /> 
<context:component-scan base-package="com.quad.service" /> 

<context:property-placeholder location="classpath:database.properties" /> 
<!-- <context:property-placeholder location="classpath:spring-security.xml" /> --> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/jsp/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${database.driver}" /> 
     <property name="url" value="${database.url}" /> 
     <property name="username" value="${database.user}" /> 
     <property name="password" value="${database.password}" /> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
     <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
     </props> 
     </property> 
</bean> 

請大家幫忙。

+0

你有沒有其他的Spring配置文件? – geoand

+0

@geoand spring security資源文件夾 – Ali786

+0

也許RoleDAOImpl類沒有用@Repository註解 – 2014-03-24 14:23:46

回答

1

這絕對是一個不匹配的依賴版本的問題。 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

實現org.hibernate.cache.CacheProvider在休眠圖4(a不同的高速緩存標準被創建)

指定您的會話工廠類是除去

這是特定於休眠3.

這意味着你使用hibernate 4相關的依賴與錯誤的會話工廠類。

只要您使用Spring 3.1.0.RELEASE或更高版本,hibernate 4類可以在spring-orm中使用(與hibernate3版本一樣)。

你有那麼兩個選項:

  1. 變回休眠3
    • 這取決於你的項目是如何構建的。
    • 如果它使用Maven,這將涉及到更改休眠核心依賴
  2. 更改Spring配置Hibernate的4
    • 這將僅適用於春季3.1.0.RELEASE工作或更高
    • 這一變化的上述AnnotationSessionFactoryBean到:
      org.springframework.orm.hibernate4.LocalSessionFactoryBean
0

每當你注入SessionFactory的,你必須提供setter和getter方法。它會解決你的問題

相關問題