gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:20:29 26 4
gpt4 key购买 nike

我将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com