您好我在执行db操作时遇到异常。
java.lang.RuntimeException:在上下文中找不到EntityManager。尝试使用@ play.db.jpa.Transactional
注释您的操作方法以下是代码
paymentResponse.onRedeem(response -> persistTransaction(response, buyerInformation.getCustomerId()));
paymentResponse.onRedeem(response -> completeProductOrder(response, buyerInformation));
paymentResponse.onRedeem(response -> postSuccessfulProcess(response, purchasePayload, buyerInformation));
persistTransaction和postSuccessfulProcess使用类似下面的内容进行数据库更新事务
JPA.withTransaction(() -> {
和要保存的代码就像
JPA.em().persist(entity);
withTransaction使用键"默认"从地图绑定EntityManager。但JPA.em()实际上查找名为currentEntityManager的EntityManager。我试图使用JPA.em("默认"),但它会给连接超时。
我是新玩的框架。你能否就这个问题向我提出一些补救措施。
答案 0 :(得分:0)
从Play 2.5全局对象开始,不推荐使用JPA,而应使用JPAApi。 JPAApi必须先注入某处。由于我只看到代码的一小部分,我建议注入它的最简单方法是这样的:
JPAApi jpa = Play.current().injector().instanceOf(JPAApi.class);
现在你可以使用它了:
jpa.withTransaction(() ->...
或
jpa.em().persist(entity);
原因最好的方法是使用@Inject注释注入。
您可以在此post中找到有关从Play 2.5开始的JPA使用差异的更多信息。