我需要在jsp中迭代List<myClass>
。這是我如何獲得清單:java.lang.Long不能轉換爲java.lang.String
(當我評論它,頁面加載就好了)。
<%
List<myClass> pjList = null;
StringBuffer ejbQuery = new StringBuffer();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPersistence");
EntityManager em = emf.createEntityManager();
ejbQuery.append("SELECT e ");
ejbQuery.append("FROM myClass e ");
pjList = em.createQuery(ejbQuery.toString()).getResultList();
for(myClass pj : pjList)
{
%>
<br />
<%= pj.getSomeField()%>
<br />
<%
}
%>
這是我在google appengine中運行時得到的錯誤。本地運行良好。
Uncaught exception from servlet
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
at org.datanucleus.store.appengine.DatastoreFieldManager.fetchStringField(DatastoreFieldManager.java:188)
at org.datanucleus.state.AbstractStateManager.replacingStringField(AbstractStateManager.java:1180)
at ar.edu.kennedy.proveedores.entities.ProEnteEy.jdoReplaceField(ProEnteEy.java)
at ar.edu.kennedy.proveedores.entities.ProPersonaJuridicaEy.jdoReplaceField(ProPersonaJuridicaEy.java)
at ar.edu.kennedy.proveedores.entities.ProEnteEy.jdoReplaceFields(ProEnteEy.java)
at org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:2772)
at org.datanucleus.state.JDOStateManagerImpl.replaceFields(JDOStateManagerImpl.java:2791)
at org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject(DatastorePersistenceHandler.java:443)
at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo(DatastoreQuery.java:433)
at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo(DatastoreQuery.java:391)
at org.datanucleus.store.appengine.query.DatastoreQuery.access$800(DatastoreQuery.java:97)
at org.datanucleus.store.appengine.query.DatastoreQuery$5.apply(DatastoreQuery.java:515)
at org.datanucleus.store.appengine.query.DatastoreQuery$5.apply(DatastoreQuery.java:507)
at org.datanucleus.store.appengine.query.StreamingQueryResult.resolveNext(StreamingQueryResult.java:137)
at org.datanucleus.store.appengine.query.StreamingQueryResult$1.computeNext(StreamingQueryResult.java:163)
at org.datanucleus.store.appengine.query.AbstractIterator.tryToComputeNext(AbstractIterator.java:132)
at org.datanucleus.store.appengine.query.AbstractIterator.hasNext(AbstractIterator.java:127)
at org.datanucleus.store.appengine.query.StreamingQueryResult$AbstractListIterator.hasNext(StreamingQueryResult.java:229)
at org.apache.jsp.busqueda_jsp._jspService(busqueda_jsp.java:138)
如果我使用ListIterator並調用hasNext(),我得到相同的錯誤。幫助我瞭解發生了什麼,如何解決這個問題?
請注意:在現實生活中,我的持久性提供程序是一個單例,我在一個servlet中的類中執行查詢,但我複製了相關代碼,以便您可以看到List來自哪裏。 – rec