线程“AWT-EventQueue-0”中的异常java.lang.IllegalStateException:尝试对已关闭的EntityManager执行操作

时间:2017-05-28 22:32:28

标签: java

我有以下问题,在我的应用程序中我希望有某种登录方式。我有以下代码:(网络上的灵感)

 public boolean login(String username, String password)
    {
       try{
            EntityTransaction entr=em.getTransaction();
            entr.begin();

        TypedQuery<Users> query = em.createQuery("SELECT u FROM Users u WHERE u.login = :login AND u.password = :pass", Users.class);        
        query.setParameter("login", username);
        query.setParameter("pass", password); 
        try{ 
            Users u = query.getSingleResult();
            em.getTransaction().commit();
            return true;
        }catch(javax.persistence.NoResultException e)
        {
            return false;
        }
        }
        finally{
        em.close();
        }

    }

当我运行它并尝试登录时,控制台将写下以下消息:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManager.
你能帮帮我吗?我不知道它是什么......

1 个答案:

答案 0 :(得分:0)

如果您在finally中关闭em,那么下次调用此方法时它将被关闭。也许你应该尝试在那里结束交易。