有没有办法在游戏中使用EntityManager!框架1.2.x 404页面?

时间:2013-01-07 10:00:56

标签: playframework playframework-1.x

我们正在为播放提供自定义404.html页面(在应用/观看/错误中)! 1.2.5

在服务404期间,我们希望连接到DB,但是这样做时我们得到:

play.exceptions.JPAException: The JPA context is not initialized. 
JPA Entity Manager automatically start when one or more classes annotated
with the @javax.persistence.Entity annotation are found in the application.
at play.db.jpa.JPA.get(JPA.java:22)
at play.db.jpa.JPA.em(JPA.java:51)
at play.db.jpa.JPQL.em(JPQL.java:18)
at play.db.jpa.JPQL.find(JPQL.java:46)
...
at controllers.Security.check(Security.java:146)
at play.utils.Java.invokeStaticOrParent(Java.java:162)
at play.utils.Java.invokeChildOrStatic(Java.java:184)
at controllers.Secure$Security.invoke(Secure.java:203)
...
at play.server.PlayHandler.serve404(PlayHandler.java:681)

我应该寻求像https://stackoverflow.com/a/12242994/1444089这样的解决方案 - 所以定义我自己的控制器处理程序而不仅仅是模板吗?

也许有一些配置选项,但找不到。

最后但并非最不重要的 - 为什么会发生这种情况,为什么404会出现其他请求生命周期而不是典型的播放请求?

1 个答案:

答案 0 :(得分:1)

您可以在try / finally

中使用JPAPlugin方法startTx和closeTx
JPAPlugin.startTx(false);
try {
    // your code
} finally {
    JPAPlugin.closeTx();
}