7

Javaだけを使用してJPAを構成しようとしています。

@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;
}
4

1 に答える 1

7

問題は、現在の構成がentityManagerFactoryBeanという Bean を作成することです。ただし、ルート例外のエラー メッセージには、entityManagerFactoryという名前の Beanが見つからないことが示されています。

この問題を解決するには 2 つのオプションがあります (最も好きなものを選択してください)。

  1. LocalContainerEntityManagerFactoryBeanを構成するメソッドの名前をentityManagerFactoryBean()からentityManagerFactory()に変更します。これにより、 entityManagerFactoryという名前の Bean が作成されます。
  2. @Beanアノテーションの name 属性を「entityManagerFactory」に設定します。つまり、構成メソッドに@Bean(name="entityManagerFactory")アノテーションを付けます。このようにして、Bean の名前を自分で指定し、注釈付きメソッドの名前が確実に無視されるようにすることができます。
于 2013-02-12T06:56:46.677 に答える