2017-01-12 4 views
1

Ich verstehe nicht, was überhaupt passiert!LocalContainerEntityManagerFactoryBean kann nicht in EntityManagerFactory konvertiert werden

Plötzlich hörten einfache Dinge auf zu arbeiten!

Jetzt eh Ich versuche, etwas zu definieren, wie hier http://docs.spring.io/spring-data/jpa/docs/1.10.6.RELEASE/reference/html/#jpa.java-config

erhalte ich den folgenden Compiler-Fehler

incompatible types: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean cannot be converted to javax.persistence.EntityManagerFactory 

Und das ist richtig, da LocalContainerEntityManagerFactoryBean nicht implementiert EntityManagerFactory, die durch JpaTransactionManager#setEntityManagerFactory() Verfahren erforderlich ist, .

Wie kann es sein, dass das offizielle Beispiel absolut falsches Snippet enthält? Wie kann es sein, dass dieser Schnipsel für mich für eine Weile kompiliert hat?

Was ich brach?

UPDATE

konnte ich

umschreiben
txManager.setEntityManagerFactory(entityManagerFactory()); 

zu

txManager.setEntityManagerFactory(entityManagerFactory().getObject()); 

So ein Fehler in der doc es ist?

+0

Haben Sie versucht, die Versionen von Gläsern zu überprüfen, die Sie verwenden? Du hast gesagt, dass dies "plötzlich" passiert ist ... Vielleicht ist es ein Versuch, etwas zu verbessern? Bitte geben Sie in jedem Fall die Versionen von Spring, Hibernate usw. an. –

+0

Version ist '1.10.6.RELEASE', zu der doc gehört. Hibernate ist nicht an dem Problem beteiligt. Ich habe mich daran erinnert, was ich geändert habe: Ich habe 'getObject()' entfernt, weil es im Beispiel kein 'getObject()' gibt. Ich versuchte, näher am Doc zu sein, aber in der Frühlingshölle versunken. – Dims

Antwort

1
txManager.setEntityManagerFactory(entityManagerFactory()); 

nicht nehme an, Sie arbeiten entweder diese

txManager.setEntityManagerFactory(entityManagerFactory().getObject()); 

oder

txManager.setEntityManagerFactory(entityManagerFactory().getNativeEntityManagerFactory() 

so tun, ehrlich ich weiß nicht, warum es funktionierte zuvor.

Ich denke, es ist ein Fehler, da ich auf diese Weise versucht, wie es in der offiziellen doc beschrieben und es hat nicht funktioniert

4

Ja, ist die Dokumentation falsch

Mit diesem Code Entity Manager Fabrik zu injizieren in txManager

@Bean @Autowired public PlatformTransactionManager transactionManager(EntityManagerFactory factory) { 
    JpaTransactionManager txManager = new JpaTransactionManager(); 
    txManager.setEntityManagerFactory(factory); 
    return txManager; 
} 
Verwandte Themen