Я использую Google App Engine с датануклеусом и JPA. Мне очень трудно понять, как я должен читать вещи из хранилища данных и передавать их в JSP. Если я загружаю список POJO с помощью entitymanager и передаю его в JSP, он вылетает в org.datanucleus.exceptions.NucleusUserException: Менеджер объектов был закрыт.
Я понимаю, почему это происходит. Очевидно, потому что я выбираю список, закрываю менеджер сущностей и передаю его в JSP, и в этот момент происходит сбой, потому что список ленив. Как мне сделать список NOT ленивым, не прибегая к таким хакам, как вызов size () или что-то в этом роде?
Вот что я пытаюсь сделать:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("parties", getParties());
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/parties.jsp");
dispatcher.forward(req, resp);
}
private List<Party> getParties(){
EntityManager em = entityManagerProvider.get();
try{
Query query = em.createQuery("SELECT p FROM Party p");
return query.getResultList();
}finally{
em.close();
}
}