我使用Google App Engine與datanucleus和JPA。我非常難以掌握如何從數據存儲中讀取內容並將其傳遞給JSP。如果我使用entitymanager加載POJO列表並將其傳遞給JSP,它將崩潰到org.datanucleus.exceptions.NucleusUserException:對象管理器已關閉。如何迭代Google App引擎中的JPA集合
我明白爲什麼會發生這種情況。顯然,因爲我讀取列表,關閉實體管理器並將其傳遞給JSP,此時它將失敗,因爲列表是懶惰的。如何讓列表不是懶惰而不訴諸如調用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();
}
}
另請參見:http://stackoverflow.com/questions/2294867/google-app-engine-org-datanucleus-exceptions-nucleususerexception-object-manag – 2010-06-01 04:43:48