2014-10-04 70 views
15

我想配置LocalContainerEntityManagerFactoryBean沒有persisten.xml文件。未能確定休眠持久提供

這是我的數據源 - 它適用於Hibernate SessionFactory - 因此,它沒問題。

<bean id="dataSource" 
    class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/test"/> 
    <property name="username" value="root"/> 
    <property name="password" value="root"/> 
</bean> 

這是我LocalContainerEntityManagerFactoryBean

<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="application.models" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
    </property> 
    <property name="jpaProperties"> 
     <props> 
     <prop key="hibernate.hbm2ddl.auto">create-drop</prop> 
     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
     </props> 
    </property> 
</bean> 

例外的是我得到:

...Could not instantiate bean class [org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter]: Constructor threw exception; nested exception is java.lang.IllegalStateException: Failed to determine Hibernate PersistenceProvider 

我閱讀文檔,我知道LocalContainerEntityManagerFactoryBean具有這樣的屬性,並創建類似風格LocalContainerEntityManagerFactoryBean適用於Spring in Action 3和這裏:http://softwarecave.org/2014/03/15/using-jpa-and-jta-with-spring/

也許你有一個想法,我做錯了什麼,或者至少春天想通過這個異常告訴我嗎?

在此先感謝, 乾杯:)

PS是明確的,無法確定休眠PersistenceProvider類並不意味着春天期望的persistence.xml - 這好像應該是錯誤:從{類路徑解析沒有持久單元*:META-INF/persistence.xml中}

解決:

感謝JB Nizet - 你是否有類似的問題補充:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.6.Final</version> 
    </dependency> 

to pom.xml

+5

您可能沒有所需的有休眠jar包在你的類路徑中。 Spring正在尋找類org.hibernate.jpa.HibernateEntityManagerFactory或類org.hibernate.ejb.HibernateEntityManagerFactory – 2014-10-04 11:22:48

+0

是的,這是它,謝謝你 - 但是,爲什麼春天不會扔我這樣的:「沒有找到類「?這是非常有欺騙性的,如果它被報告爲問題? – bkowalczyyk 2014-10-04 11:37:33

+0

隨時可以舉報。更清晰的錯誤信息不會傷害任何人。 – 2014-10-04 11:39:40

回答

1

下面的代碼適用於我。

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" p:dataSource-ref="dataSource"> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true" /> 
      <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" /> 
     </bean> 
    </property> 
</bean> 

與Hibernate = 4.3.5.Final 春天= 4.1.4.RELEASE