List <class> </class>查询中的ClassCastException

时间:2014-10-08 09:40:05

标签: jsp google-app-engine exception google-cloud-datastore

Google App Engine by page.jsp

<%
    Query query = pm.newQuery(Store.class);
    query.setFilter("id=='" + store + "'");
    query.setOrdering("name asc");
    List<Store> aList = (List<Store>) query.execute();
    System.out.println("aList==isEmpty?"+aList.isEmpty());
%>

例外:

java.lang.ClassCastException: com.google.appengine.api.datastore.Blob cannot be cast to java.lang.String

谁能帮帮我?

2 个答案:

答案 0 :(得分:1)

注意:希望将此问题标记为GAE ClassCastException Long cannot be cast to double的可能副本,但无法解决(因为StackOverflow表示其他问题没有接受的答案或答案为正分数。)


该异常意味着您在数据存储区中保存了至少一个Store实体,并使用属性类型Blob将其保存在您的Java实体中,并将​​其指定为String您想要查询它并将其转换回Java类,尝试转换Blob - &gt; String抛出异常。

您可以执行的操作是使用低级数据存储api读取所有Store个权限,并将Blob属性更改为String,这些属性应为String in {首先,然后重新保存这些实体(或者如果它应该是String,则将Java字段的类型从Blob更改为Blob。或者,如果当前实体不重要(例如测试数据),只需删除它们即可。

文档:Java low-level Datastore API

答案 1 :(得分:0)

对不起!! 我解决了这个问题。 回答:

修改

<%@ page import="java.util.*"%>

<%@ page import="java.util.List" %>