异常:java.lang.IllegalStateException: EntityManager is closed

修改前:

query = entityManager.createQuery(hql);

 for (int i = 0; i < (totle /fillAccountMaxLoop); i++) {

     query.setFirstResult(i *fillAccountMaxLoop);

     query.setMaxResults(fillAccountMaxLoop);

     list = (List)query.getResultList();

 }

 if (totle % fillAccountMaxLoop > 0) {

    query.setFirstResult(Integer.valueOf((totle - (totle %fillAccountMaxLoop)) + ""));

     query.setMaxResults(Integer.valueOf((totle% fillAccountMaxLoop) + ""));

     list = (List)query.getResultList();

 }

原因当你entityManager.createQuery一次之后,调用了query.getResultList()方法,下次在调的时候就出错了,解决办法是再次entityManager.createQuery得到query,才能调用query.getResultList()方法。

修改后:

for (int i= 0; i < (totle / fillAccountMaxLoop); i++) {

     query = entityManager.createQuery(hql);

     query.setFirstResult(i *fillAccountMaxLoop);

     query.setMaxResults(fillAccountMaxLoop);

     list = (List)query.getResultList();

 }

 if (totle % fillAccountMaxLoop > 0) {

     query = entityManager.createQuery(hql);

     query.setFirstResult(Integer.valueOf((totle- (totle % fillAccountMaxLoop)) + ""));

     query.setMaxResults(Integer.valueOf((totle% fillAccountMaxLoop) + ""));

     list = (List)query.getResultList();

 }

你可能感兴趣的:(java)