2013-02-11 2 views
7

Ich versuche, JPA konfigurieren nur mit Hilfe von Java.Wie lautet die Java-Konfigurationsversion des Tags jpa: Repositories?

Ich kam auf die Idee, dass @EnableJpaRepositories wäre das Äquivalent von jpa: Repositories-Tag in XML, aber ich denke, das ist nicht der Fall?

ich dies habe in meinem xml:

<jpa:repositories base-package="com.myapp.bla.bla" /> 

Aber wenn ich es entfernen und stattdessen

@EnableJpaRepositories("com.myapp.bla.bla") 

In meinem Java-config, erhalte ich eine Ausnahme - ich dachte, es war möglich zu konfigurieren JPA mit Java seit 1.2.0?

EDIT:

Die Wurzel Ausnahme ist:

No bean named 'entityManagerFactory' is defined 

Ich nehme die Ausnahme hat mit dieser Definition in meiner Config zu tun, aber wie gesagt, alles funktioniert, wenn ich die xml hält und importieren zu meiner Java-Konfiguration.

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException { 
    LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean(); 

    factoryBean.setDataSource(dataSource()); 
    factoryBean.setPackagesToScan(new String[] { "com.myapp.bla.bla.model" }); 
    factoryBean.setPersistenceProviderClass(HibernatePersistence.class); 
    Properties props = new Properties(); 
    props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect"); 
    factoryBean.setJpaProperties(props); 

    return factoryBean; 
} 
+1

Bitte senden Sie die Ausnahme auch in Ihrer Frage. –

Antwort

6

Das Problem ist, dass die aktuelle Konfiguration eine Bohne entityManagerFactoryBean genannt schafft. Allerdings sagt die Fehlermeldung Ihrer Wurzel Ausnahme, dass eine Bohne EntityManagerFactory namens nicht gefunden wird.

Sie haben zwei Möglichkeiten zum Beheben des Problems (wählen Sie die Ihnen am besten gefällt):

  1. Ändern Sie den Namen der Methode, die die LocalContainerEntityManagerFactoryBean von entityManagerFactoryBean()-EntityManagerFactory konfiguriert (). Dies schafft eine Bean mit dem Namen EntityManagerFactory.
  2. den Namen Attribut der Set @Bean Anmerkung zu "EntityManagerFactory". Mit anderen Worten, notieren Sie die Konfigurationsmethode mit @Bean (name = "entityManagerFactory") Annotation. Auf diese Weise können Sie den Namen der Bean selbst angeben und sicherstellen, dass der Name der mit Annotationen versehenen Methode ignoriert wird.
+0

Option 3. Legen Sie die entityManagerFactoryRef Eigenschaft auf die Anmerkung. Dies könnte neu sein, da die Frage beantwortet wurde. –

Verwandte Themen