2017-05-28 36 views
0

私のアプリケーションでは、次のような問題があります。 (ウェブ上ここでインスピレーション)スレッド「AWT-EventQueue-0」の例外java.lang.IllegalStateException:閉じられたEntityManagerで操作を実行しようとしました

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. 

をあなたは私を助けることができますか?私はそれが何であるか分かりません...

答えて

0

もしあなたが最後に閉じたら、次にこのメソッドを呼び出すと閉じられます。トランザクションを代わりに終了するようにしてください。

+0

さて、最終的に何を書かなければならないのですか?私は最終的にtry-catchをすることはできません。それはどこにあるべきですか? – Aaka

+0

最後にtry-cachを実行することはできますが、コードではEntityTransactionはまったく必要ありません。なぜなら、読んでいるだけなので –

関連する問題