无法将java.lang.Long强制转换为java.lang.String

我需要List<myClass>在一个jsp中迭代一个。这是我获取列表的方式:

(当我发表评论时,页面加载正常)。

 <%

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(),则会出现相同的错误。帮助我了解发生了什么,如何解决?

回答:

看来您从“ myclass”获得的映射是错误的。

当它实际上是一个“数字”时,有一个标记为“字符串”的字段。

从StackTrace看来发生的是,您的值是从数据库中获取的,然后转换为字符串。

由于该值不是字符串,因此会出现该异常。

尝试在您的班级中识别哪些“数字”值映射为String并已将其固定。一步一步开始,直到它起作用。

以上是 无法将java.lang.Long强制转换为java.lang.String 的全部内容, 来源链接: utcz.com/qa/432072.html

回到顶部