我想在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中。我应该为这些实体编写什么来分配数据源?
答案 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();