首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jpa/hibernate访问辅助数据库数据的PlayFramework

用jpa/hibernate访问辅助数据库数据的PlayFramework
EN

Stack Overflow用户
提问于 2014-12-03 14:36:49
回答 1查看 542关注 0票数 0

我正在尝试将第二个数据库连接到用PlayFramework2编写的written应用程序。

我正确地配置了我的应用程序。我已经添加了第二个源callec crm。这是我的控制台日志:

代码语言:javascript
复制
--- (RELOAD) ---

[info] play - datasource [jdbc:mysql://localhost/svp] bound to JNDI as DefaultDS
[info] play - datasource [jdbc:mysql://192.168.0.4/scrm_customer] bound to JNDI as CRM
[info] play - database [default] connected at jdbc:mysql://localhost/svp
[info] play - database [CRM] connected at jdbc:mysql://192.168.0.4/scrm_customer
[info] play - Application started (Dev)

我在我的persistence.xml中添加了以下内容:

代码语言:javascript
复制
<persistence-unit name="CRM" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>CRM</non-jta-data-source>
</persistence-unit>

我的配置是:

代码语言:javascript
复制
 db.default.jndiName=DefaultDS
 db.default.driver=com.mysql.jdbc.Driver
 db.default.url="jdbc:mysql://localhost/svp"
 db.default.user=root
 db.CRM.jndiName=CRM
 db.CRM.driver=com.mysql.jdbc.Driver
 db.CRM.url="jdbc:mysql://192.168.0.4/scrm_customer"
 db.CRM.user=root
 db.default.logStatements=true
 jpa.default=defaultPersistenceUnit

但是,当我试图使用代码从第二个db获取一些数据时,如下所示:

代码语言:javascript
复制
List<Customer> allCustomers = (List<Customer>) JPA.em("CRM")
        .createQuery("FROM Customer", Customer.class)
        .getResultList();

我收到了一个错误:

代码语言:javascript
复制
[error] play - Cannot invoke the action, eventually got an error: java.lang.RuntimeException: No JPA EntityManagerFactory configured for name [CRM]
[error] application - 

! @6kd0136e7 - Internal server error, for (GET) [/SupraADMIN/klienci] ->

play.api.Application$$anon$1: Execution exception[[RuntimeException: No JPA EntityManagerFactory configured for name [CRM]]]
        at play.api.Application$class.handleError(Application.scala:293) ~[play_2.10-2.2.4.jar:2.2.4]
        at play.api.DefaultApplication.handleError(Application.scala:399) [play_2.10-2.2.4.jar:2.2.4]
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10-2.2.4.jar:2.2.4]
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10-2.2.4.jar:2.2.4]
        at scala.Option.map(Option.scala:145) [scala-library.jar:na]
        at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrElse(PlayDefaultUpstreamHandler.scala:264) [play_2.10-2.2.4.jar:2.2.4]
Caused by: java.lang.RuntimeException: No JPA EntityManagerFactory configured for name [CRM]
        at play.db.jpa.JPA.em(JPA.java:34) ~[play-java-jpa_2.10-2.2.4.jar:2.2.4]
        at models.Customer.getCRMList(Customer.java:124) ~[na:na]
        at controllers.admin.CMS.Customers(CMS.java:157) ~[na:na]
        at admin.Routes$$anonfun$routes$1$$anonfun$applyOrElse$24$$anonfun$apply$24.apply(routes_routing.scala:429) ~[na:na]
        at admin.Routes$$anonfun$routes$1$$anonfun$applyOrElse$24$$anonfun$apply$24.apply(routes_routing.scala:429) ~[na:na]
        at play.core.Router$HandlerInvoker$$anon$7$$anon$2.invocation(Router.scala:183) ~[play_2.10-2.2.4.jar:2.2.4]
[error] application - REGUEST: GET /SupraADMIN/klienci GENERATED ERROR: @6kd0136e7: Execution exception in /home/korbeldaniel/Aplikacje/Eclipse/SVP/modules/common/app/models/Customer.java:124

我错过了什么?我查过官方文件,但没有发现有用的东西。

请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 15:03:39

用以下注释注释控制器方法:

代码语言:javascript
复制
@Transactional(value = "CRM", readOnly = true)

在控制器方法中执行:

代码语言:javascript
复制
JPA.em().createQuery("FROM Customer", Customer.class).getResultList();

或者如果您不想使用注释:

代码语言:javascript
复制
List<Customer> customers = JPA.withTransaction("CRM", true, new Function0<List<Customer>>() {

        @Override
        public List<Customer> apply() throws Throwable {
            return JPA.em().createQuery("FROM Customer", Customer.class).getResultList();
        }
    });

我强烈建议使用JPA.withTransactionAsync

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27274371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档