2013-02-11 74 views
7

我想用Java來配置JPA。什麼是jpa:repositories標籤的Java配置版本?

我知道@EnableJpaRepositories將等同於xml中的jpa:repositories標記,但我想這不是這種情況?

我有這個在我的xml:

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

但是,如果我刪除它,而是使用

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

在我的Java的配置,我得到一個例外 - 我認爲這是可能配置自從1.2.0開始使用Java的JPA?

編輯:

根的例外是:

No bean named 'entityManagerFactory' is defined 

我想除了有這個定義在我的配置做的,但正如所說,一切,如果我把XML和導入它的工作原理到我的java配置。

@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

請在您的問題中發佈例外。 – 2013-02-11 19:31:40

回答

6

的問題是,您當前的配置創建一個名爲entityManagerFactoryBean豆。但是,根異常的錯誤消息表示找不到名爲entityManagerFactory的bean。

您有解決這個問題(選擇你最喜歡的一個)兩個選項:

  1. 變化的方法,從entityManagerFactoryBean(配置LocalContainerEntityManagerFactoryBean名稱)的entityManagerFactory( )。這將創建一個名爲entityManagerFactory的bean。
  2. 設置@Bean註釋的名稱屬性爲「entityManagerFactory」。換句話說,用@Bean(name =「entityManagerFactory」)註釋標註配置方法。這樣您可以自己指定bean的名稱,並確保註釋方法的名稱被忽略。
+0

選項3.在註釋中設置entityManagerFactoryRef屬性。自問題得到解答以來,這可能是新的。 – 2018-01-29 19:14:58