2010-02-05 31 views
0

我試圖使用持久化框架來檢索表例外持久查詢

我寫的代碼是簡單的Java類文件中的web應用

在Java類的代碼

EntityManager em = null; 
    EntityManagerFactory emf = null; 

public List fname (String id) { 
    String fname = null; 
    List persons = null; 
    try { 
     emf = Persistence.createEntityManagerFactory("WebApplicationSecurityPU"); 
     em = emf.createEntityManager(); 
     persons = em.createQuery("select r from Roleuser r").getResultList(); 
     int i=0; 
     for (i=0;i<persons.size(); i++) 
      System.out.println("Testing n "+ i +" " + persons.get(i)); 

    } catch(Exception e) { 
     System.out.println("" + e); 
    } 
    finally { 
     if(em != null) { 
      em.close(); 
     } 
    } 
    return persons; 
} 

但在運行該即時得到一個IllegalArgumentException 完整的例外是

java.lang.IllegalArgumentException異常:一個 例外,而在EntityManager的創建 查詢發生

我認爲實體類未初始化或他們沒有與數據庫連接 這就是爲什麼IllegalArgumentException

回答

0

我可以在代碼中的一些變化糾正

@PersistenceUnit 
public EntityManagerFactory emf; 
EntityManager em; 


public List fname (String id) { 
    String fname = null; 
    List persons = null; 
    //private PersistenceManagerFactory persistenceManagerFactory; 

    try { 
     emf = Persistence.createEntityManagerFactory("WebApplicationSecurityPU"); 

     em = emf.createEntityManager(); 
     persons = em.createQuery("select r from Roleuser r").getResultList(); 

     int i=0; 
     for (i=0;i<persons.size(); i++) 
      System.out.println("Testing n "+ i +" " + persons.get(i)); 

    } catch(Exception e) { 
     System.out.println("" + e); 
    } 
    finally { 
     if(em != null) { 
      em.close(); 
     } 
    } 
    return persons; 
} 

感謝
Pradyut

+0

你是在回答你自己的問題,還是在修改它? – skaffman 2010-02-07 18:23:06