0

システムで複数のデータベースを使用しています。AtomikosDataSourceBean複数のデータベース間で xa 分散トランザクションを有効にするために使用しています。

spring-configuration.xmlファイルでは、entityManagerFactory1 と entityManagerFactory2 などの 2 つの個別の Bean を作成できますEntityManagerFactory。しかし、Spring Java を使用して実行すると@Configuration、エラーが発生します。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined

1 つを entityManagerFactory として作成し、もう 1 つを entityManagerFactory1 として作成すると、次のようなエラーが発生します。

Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.tom.boon.core.model.Person

entityManagerFactory1 の下に作成されたエンティティ用。

Spring Java @Configuration で 2 つの別個の entityManagerFactory を定義する方法を理解するのを手伝ってくれますか。

4

2 に答える 2

0

構成ファイルで、persistenceUnitName次のようにプロパティを使用します。

<bean id="foo" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSourceFoo"/>
    <property name="persistenceUnitName" value="foo"/>
</bean>

<bean id="bar" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSourceBar"/>
    <property name="persistenceUnitName" value="bar"/>
</bean>

がどのようdataSourceに異なるかを確認してください。と でさまざまな接続プロパティを定義できdataSourceFooますdataSourceBar。次に、単に使用します:

@PersistenceContext(unitName = "foo")
private EntityManager foo;

@PersistenceContext(unitName = "bar")
private EntityManager bar;

EntityManagers foo と bar は異なるデータベースに接続する必要があります。

Spring にアノテーション<context:annotation-config />を認識させたい場合は、構成ファイルに要素が必要であることを忘れないでください。@PersistenceContext

于 2018-07-03T01:00:46.017 に答える