2010-02-05 29 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