J'utilise Google App Engine avec datanucleus et JPA. J'ai vraiment du mal à comprendre comment je suis supposé lire des données du magasin de données et les transmettre à JSP. Si je charge une liste de POJO avec entitymanager et la passe à JSP, il se bloque à org.datanucleus.exceptions.NucleusUserException: le gestionnaire d'objets a été fermé.Comment faire une itération des collections JPA dans le moteur Google App
Je comprends pourquoi cela se produit. Évidemment, parce que je récupère la liste, fermez le gestionnaire d'entités et passez-le à JSP, auquel cas il échouera parce que la liste est paresseuse. Comment puis-je faire la liste pas paresseux sans avoir recours à des hacks comme appeler size() ou quelque chose comme ça?
Voici ce que je suis en train de faire:
@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();
}
}
Voir aussi: http://stackoverflow.com/questions/2294867/google-app-engine-org-datanucleus-exceptions-nucleususerexception-object-manag –