没有 EntityManager 绑定到全局?尝试从 onHandlerNotFound 进行交易
No EntityManager Bound To Global? Attempting Transaction from onHandlerNotFound
我将 Play Framework 2.3 与 Hibernate 一起使用,并在用户尝试访问未定义的路由时尝试呈现我的 404 页面。
我的主模板调用了数据库,以获取填充导航栏下拉列表的项目列表。当我尝试在我的 onHanderNotFound 方法中从全局 class 呈现我的 404 模板时,这导致了一个问题,因为我的 404 模板扩展了我的主模板。
是否有解决此问题的方法?简单地用 @play.db.jpa.Transactional 注释覆盖的 onHanderNotFound 方法并不能解决问题,无论哪种方式我都会得到以下异常:
java.lang.RuntimeException: 没有 EntityManager 绑定到这个线程。尝试使用 @play.db.jpa.Transactional
注释您的操作方法
我还尝试调用具有如下注释的控制器:
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());
}
});
}
}
我将 Play Framework 2.3 与 Hibernate 一起使用,并在用户尝试访问未定义的路由时尝试呈现我的 404 页面。
我的主模板调用了数据库,以获取填充导航栏下拉列表的项目列表。当我尝试在我的 onHanderNotFound 方法中从全局 class 呈现我的 404 模板时,这导致了一个问题,因为我的 404 模板扩展了我的主模板。
是否有解决此问题的方法?简单地用 @play.db.jpa.Transactional 注释覆盖的 onHanderNotFound 方法并不能解决问题,无论哪种方式我都会得到以下异常:
java.lang.RuntimeException: 没有 EntityManager 绑定到这个线程。尝试使用 @play.db.jpa.Transactional
注释您的操作方法我还尝试调用具有如下注释的控制器:
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());
}
});
}
}