Spring JPA - org.springframework.orm.jpa.LocalContainerEntityManagerFactorybean kann nicht umgewandelt werden, javax.die Persistenz.EntityManagerFactory

im moment im Versuch, die JPA beispielsweise das arbeiten mit spring boot

( http://spring.io/guides/tutorials/data/3/ ).

Wenn ich den code aus dem Beispiel:

@Bean
public DataSource dataSource() throws SQLException {

EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
return builder.setType(EmbeddedDatabaseType.H2).build();
}

@Bean
public EntityManagerFactory entityManagerFactory() throws SQLException {

HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);

LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.yummynoodlebar.persistence.domain");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();

return factory.getObject();
}

@Bean
public EntityManager entityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}

@Bean
public PlatformTransactionManager transactionManager() throws SQLException {

JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory());
return txManager;
}

@Bean
public HibernateExceptionTranslator hibernateExceptionTranslator() {
return new HibernateExceptionTranslator();
}

Bekomme ich aber immer die Ausnahme ", Verursacht durch: java.lang.Classcastexception-Fehler: org.springframework.orm.jpa.LocalContainerEntityManagerFactorybean$$EnhancerBySpringCGLIB$$3cbaf28d kann nicht umgewandelt werden, javax.die Persistenz.EntityManagerFactory".

Bin ich mit diesem Beispiel meine eigenen datasource:

@Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUsername("user");
        dataSource.setMaxTotal(5);
        dataSource.setInitialSize(2);
        dataSource.setPassword("pw");
        dataSource.setUrl("jdbc:mysql://localhost/data");
        return dataSource;
    }

Wenn ich Veränderung einige Dinge funktioniert alles einwandfrei:

Ich die "EntityManagerFactory"-Methode:

public LocalContainerEntityManagerFactoryBean entityManagerFactory() ...

und die transactionManager-Methode:

public PlatformTransactionManager transactionManager(
        EntityManagerFactory emf) throws SQLException {

und legen Sie die EntityManagerFactory direkt über die Methode, die variable "emf".

Warum ist das so?

Kann mir jemand erklären, warum das Beispiel aus dem tutorial funktioniert nicht? Ich bin mit dem mysql-Treiber für dieses Projekt.

Danke!

Hinsichtlich

  • Ich habe genau das gleiche Problem hier.
  • Diese config hilft: github.com/eugenp/tutorials/blob/master/spring-jpa/src/main/...
  • ich habe geschrieben, dass die Lösung^^ ich will nur wissen, warum der code der Feder.io-website nicht funktionieren.
  • Ich schrieb einen blog u von Interesse sein könnten, in, jasenkoh.blogspot.com/2014/11/...
  • Habe ich geändert, den zurückgegebenen Typ der entityManagerFactory () - Methode LocalContainerEntityManagerFactorybean und es war ok für mich. Ich habe eine Spring-boot-Projekt mit zwei unterschiedlichen datasources und ich hatte zu schreiben transactionManager() entityManagerFactory() etc... für jede Konfiguration zu unterscheiden, die beide datasource-Nutzung.
InformationsquelleAutor jvecsei | 2014-08-07
Schreibe einen Kommentar