2014-10-04 101 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