2017-05-28 50 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

如果你在最後關閉em,那麼下次你調用這個方法時它會被關閉。也許你應該嘗試在那裏結束交易。

+0

好的,但是我最後要寫些什麼呢?我終於無法嘗試趕上。到底應該在哪裏? – Aaka

+0

你可以不用最後做try-cach,而且在你的代碼中你完全不需要EntityTransaction,因爲你只是在讀一個read –

相關問題