2014-10-04 12 views
15

Próbuję skonfigurować LocalContainerEntityManagerFactoryBean bez pliku persisten.xml.Nie udało się określić Hibernate PersistenceProvider

to jest moje źródło danych - działa dla Hibernate SessionFactory - więc jest w porządku.

<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> 

to moja 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> 

Wyjątek że otrzymuję:

...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 

Czytałem dokumentację, i wiem, że LocalContainerEntityManagerFactoryBean ma taką właściwość, i podobny styl tworzenia LocalContainerEntityManagerFactoryBean działa wiosną w działaniu 3, a tutaj: http://softwarecave.org/2014/03/15/using-jpa-and-jta-with-spring/

Może masz pojęcie, co robię źle, a przynajmniej jaka wiosna chce mi powiedzieć przez ten wyjątek?

Dzięki z góry, Cheers :)

PS być jasne, nie udało się ustalić, hibernacji PersistenceProvider nie oznacza, że ​​sprężyna oczekiwać persistence.xml - powinno to być błąd jak: Nr jednostki utrwalania analizowanych z {ścieżce klasy *: META-INF/persistence.xml}

ZDECYDOWANE:

dzięki JB Nizet - jeśli będzie miał podobny problem dodać:

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

do pom.xml

+5

Prawdopodobnie nie mają wymaganego hibernować słoiki w swojej ścieżce klas. Wiosna szuka klasy org.hibernate.jpa.HibernateEntityManagerFactory lub klasy org.hibernate.ejb.HibernateEntityManagerFactory –

+0

Tak, to było to, dziękuję - ale dlaczego wiosna nie rzuciła mi czegoś w stylu: "nie znaleziono klasy "? to jest bardzo mylące, czy powinno być zgłaszane jako problem? – bkowalczyyk

+0

Możesz to zgłosić. Bardziej przejrzysty komunikat o błędzie nie zaszkodzi nikomu. –

Odpowiedz

1

Poniższy kod działa dla mnie.

<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 wiosna = 4.1.4.RELEASE

Powiązane problemy