java - 没有 EntityManager 绑定(bind)到全局?尝试从 onHandlerNotFound 进行事务处理

标签 java hibernate playframework playframework-2.0

我将 Play Framework 2.3 与 Hibernate 结合使用,并在用户尝试访问未定义的路由时尝试呈现我的 404 页面。

我的主模板调用数据库,以获得填充导航栏中下拉列表的项目列表。当我尝试从 onHanderNotFound 方法内的 Global 类渲染 404 模板时,这会导致问题,因为我的 404 模板扩展了我的主模板。

这个问题有解决办法吗?简单地用 @play.db.jpa.Transactional 注释重写的 onHanderNotFound 方法并不能解决问题,无论哪种方式,我都会得到以下异常:

java.lang.RuntimeException:没有 EntityManager 绑定(bind)到此线程。尝试使用 @play.db.jpa.Transactional 注释您的操作方法

我还尝试调用具有如下注释的 Controller :

public class Global extends GlobalSettings {
    @Override
    public F.Promise<Result> onHandlerNotFound(Http.RequestHeader request) {
        return F.Promise.pure(Application.pageNotFound());
    }
}

但是,一切都没有改变。

最佳答案

只需在 JPA 上下文中调用操作,就像调用使用 @Transactional 注释的操作一样:

public class Global extends GlobalSettings {
    @Override
    public F.Promise<Result> onHandlerNotFound(Http.RequestHeader request) {

        return JPA.withTransaction(new F.Function0<F.Promise<Result>>() {
            @Override
            public F.Promise<Result> apply() throws Throwable {
                return F.Promise.pure(Application.pageNotFound());
            }
        });

    }
}

关于java - 没有 EntityManager 绑定(bind)到全局?尝试从 onHandlerNotFound 进行事务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295268/

相关文章:

java - (Accès refusé) 访问被拒绝异常

java - 为什么我的 JPanel 背景颜色不会改变?

java - Weblogic 和 Hibernate 3.6.5,将 DB 层从 Oracle 10g 迁移到 11g,陷阱、难题和经验?

json - 如何从 scala 案例类中装饰不可变对象(immutable对象)图

java - 使用 XStream 进行 XML 序列化

java - 可以使 Maven 构建包含依赖项中的 .class 文件

sql - 为什么在 JPA Hibernate 中更新查询;所有属性都在 SQL 中得到更新

java - 数据 'security' 与 java 和 hibernate

scala - 如何使用 Scala 在 Play!2 中提供上传的文件?

json - PlayFramework:如何在不将可选字段设置为 null 的情况下生成 JSON