【问题标题】:Play! Framework JPA [RuntimeException: No EntityManager bound to this thread. Try to annotate your action method with @play.db.jpa.Transactional]玩!框架 JPA [RuntimeException:没有 EntityManager 绑定到此线程。尝试使用 @play.db.jpa.Transactional 注释您的操作方法]
【发布时间】:2015-05-10 14:54:07
【问题描述】:

我有一个关于 Play 中 JPA 用法的问题。 我已经创建了一个模型类并用@Entity 和一个控制器类对其进行了注释,其中我有一个用@play.db.jpa.Transactional 注释的静态方法。当我启动激活器运行时,一切都已正确编译,并且数据库已启动,但只要我调用实体管理器的代码通过

    EntityManager em =  play.db.jpa.JPA.em();

抛出 NullException。 就我而言,persistence.xml 和 application.conf 是正确的,我已经研究过网络,但无济于事。 有什么可能的解决方案? 提前致谢!

这是我使用 JPA 的具体代码:

public class UserController extends Controller {

@play.db.jpa.Transactional
public static Result registerResponse(){
    System.out.println("registerResponse called!");
    Form<MyUser> regForm = Form.form(MyUser.class).bindFromRequest();

    if (regForm.hasErrors()) {
        System.out.println("bad request");
        System.out.println("Form: " + regForm.toString());
        System.out.println("Errors: "+regForm.errors().toString());
        return badRequest(views.html.registration.render(regForm,Arrays.asList(Avatar.values())));
    } else {
        MyUser newuser = regForm.get();
        System.out.println("persisting");       

        EntityManager em =  play.db.jpa.JPA.em();  //Here is the Nullpointer exception
        em.persist(newuser);
        System.out.println("persisted");
        return ok(authentication.render(Form.form(Login.class)));
    }
}

【问题讨论】:

  • 您可以添加更多您正在使用的代码吗?与其描述您的方法及其设置方式,不如查看实际代码以确定可能存在问题的位置。
  • 添加了我使用 JPA 的代码

标签: java hibernate jpa playframework


【解决方案1】:

我认为你不需要实例化这个类,你需要在 play.db.jpa.JPA.em() 中使用他的方法

改变这个

EntityManager em =  play.db.jpa.JPA.em();  //Here is the Nullpointer exception
em.persist(newuser);

通过这个:

try {
            JPA.em().persist(newuser);
        }
        catch(PersistenceException pe){
            //the code for the exception
        }

导入import play.db.jpa.JPA;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2015-08-11
    • 2019-07-27
    • 1970-01-01
    • 2019-08-07
    相关资源
    最近更新 更多