有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

持久性查询中的java异常

我正在尝试使用持久性框架检索一个表

我写的代码是在webapplication中的简单java类文件中

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: An exception occured while creating a query in EntityManager

我认为实体类没有初始化,或者它们没有与数据库连接 这就是为什么IllegalArgumentException


共 (1) 个答案

  1. # 1 楼答案

    我可以通过修改代码来纠正它

    @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;
    }
    

    谢谢
    普拉德尤特