首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Play!2.1 经过JPA连接多个数据库

2013-12-11 
Play!2.1 通过JPA连接多个数据库persistence-unit namedefaultPersistenceUnit transaction-typeRES

Play!2.1 通过JPA连接多个数据库
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <non-jta-data-source>DefaultDS</non-jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> </properties> </persistence-unit> <persistence-unit name="ojdbcPersistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <non-jta-data-source>OracleDS</non-jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> </properties> </persistence-unit>

?

然后在application.conf中增加数据源,完后如下:

db.default.driver=org.h2.Driverdb.default.url="jdbc:h2:file:E:/work/setup/db/data"db.default.user=sadb.default.password=sadb.default.auth=falsedb.default.jndiName=DefaultDSjpa.default=defaultPersistenceUnitdb.oracle.driver=oracle.jdbc.driver.OracleDriverdb.oracle.url="jdbc:oracle:thin:@10.1.20.65:1521:abc"db.oracle.user=LOGdb.oracle.password=LOGdb.oracle.jndiName=OracleDSjpa.oracle=ojdbcPersistenceUnit

?接下来就是痛苦的探索如何进行多数据库访问。

在网上搜索“jpa 多数据源”找到的基本都是和SPRING结合的,没想到JPA已经快成为spring的专属了。。。

?

通过在stackof上提问,得到的答案是刚才提到的两种方法:

http://stackoverflow.com/questions/20416835/playframework2-how-to-open-multi-datasource-configuration-with-jpa

但是这两种方法都不能奏效。可以留意我在问题下面的跟注。

?

http://stackoverflow.com/questions/16611839/play-framework-2-jpa-with-multiple-persistenceunit

http://play.lighthouseapp.com/projects/57987/tickets/706-multiple-databasejpa-support

尤其后来找到这个

http://stackoverflow.com/questions/8001809/jpa-getjpaconfig-method-not-found-on-plays-api

?

幸运的是终于找到了这个

http://stackoverflow.com/questions/10911492/play-framework-2-0-connecting-to-multiple-databases

从问题下面作者的回复看到尽管

jpa.getConfig("sth").em()

?不管事,但是可以用

jpa.em("sth")

?于是改成这样:

JPA.em("default").createQuery(

大功终于告成 。只要为em()指定连接对象即可

?

?

?

?

?

?

?

热点排行