2

Play フレームワーク 2.1 で複数のデータソースを jpa で設定したいです。
1 つは H2 で、もう 1 つは Oracle です。
だから私はapplication.confに次のようなコードを追加しました:

    db.default.driver=org.h2.Driver
    db.default.url="jdbc:h2:file:E:/myproject/setup/db/monitor"
    db.default.user=sa
    デシベル.デフォルト.パスワード=sa
    db.default.jndiName=デフォルトDS
    jpa.default=defaultPersistenceUnit

    db.oracle.driver=oracle.jdbc.driver.OracleDriver
    db.oracle.url="jdbc:oracle:thin:@10.1.20.10:1521:prjct"
    db.oracle.user=LOG_ANALYSE
    db.oracle.password=LOG_ANALYSE
    db.oracle.jndiName=OracleDS
    jpa.oracle=ojdbcPersistenceUnit

jpa.oracleに割り当てて無意味な名前を付ける方法がわかりません。しかし、エラーは表示されません。私はそれを変更する必要がありますか?
主な問題は次のとおりです:どのエンティティがdefaultデータソースによって管理されているかを Play に伝えるにはどうすればよいoracleですか? たとえば、クラス A、B のテーブルは H2 にあり、クラス C、D のテーブルはオラクルにあります。これらのエンティティにデータソースを割り当てるには、何をコーディングすればよいですか?

4

2 に答える 2

3

最後に、さまざまな db ソースに接続する方法を見つけました。
実際、jpa の API には という名前のメソッドがありませんgetJPAConfig("")
thers は、 の別の構造em()ですem("")
だから私は次のようにデータベースにアクセスします:

EntityManager em0 = JPA.em("default");     
EntityManager em1 = JPA.em("oracle"); 

それでおしまい!

于 2013-12-09T06:09:37.453 に答える
0

私はこの機能を (まだ) 使用していませんが、モデルの注釈の 1 つを使用する必要があります。

@PersistenceUnit(name="default")
@PersistenceUnit(name="oracle")

または、自分自身をクエリするときに、次のように指定することもできます。

EntityManager em = JPA.getJPAConfig("oracle").em(); 
于 2013-12-06T08:58:48.837 に答える