修改前:
query = entityManager.createQuery(hql);
for (int i = 0; i < (totle /fillAccountMaxLoop); i++) {
query.setFirstResult(i *fillAccountMaxLoop);
query.setMaxResults(fillAccountMaxLoop);
list = (List<T>)query.getResultList();
}
if (totle % fillAccountMaxLoop > 0) {
query.setFirstResult(Integer.valueOf((totle - (totle %fillAccountMaxLoop)) + ""));
query.setMaxResults(Integer.valueOf((totle% fillAccountMaxLoop) + ""));
list = (List<T>)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<T>)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<T>)query.getResultList();
}