2

我想用 jpa 在 Play framework 2.1 中配置多个数据源。
一个是H2,另一个是Oracle。
所以我在application.conf中添加了这样的代码:

    db.default.driver=org.h2.Driver
    db.default.url="jdbc:h2:file:E:/myproject/setup/db/monitor"
    db.default.user=sa
    db.default.password=sa
    db.default.jndiName=DefaultDS
    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并给它一个无意义的名字。但它没有显示任何错误。我应该改变它,如何改变?
主要问题是:我如何告诉 Play 哪些实体由default数据源管理,其他实体由其他实体管理oracle?例如,A、B 类的表在 H2 中,C、D 类的表在 oracle 中。我应该为这些实体编码什么来分配数据源?

4

2 回答 2

3

最后,我找到了连接不同数据库源的方法。
在游戏中,jpa 的 api 没有名为getJPAConfig(""). 是,
的另一种构造。 所以我访问数据库为:em()em("")

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

而已!

于 2013-12-09T06:09:37.453 回答
0

我没有使用这个功能(还),但你必须在你的模型上使用一个注释:

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

或者当您查询自己时,您也可以将其指定为:

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