playframework2如何用jpa打开多数据源配置

时间:2013-12-06 05:41:42

标签: jpa playframework playframework-2.1 multi-database

我想在Play框架2.1中使用jpa配置多个数据源 一个是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中。我应该为这些实体编写什么来分配数据源?

2 个答案:

答案 0 :(得分:3)

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

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

就是这样!

答案 1 :(得分:0)

我还没有使用此功能,但您必须在模型上使用其中一个注释:

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

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

EntityManager em = JPA.getJPAConfig("oracle").em();