2014-10-08 68 views
1

谷歌應用程序引擎通過page.jspClassCastException異常查詢通過列表<Class>

<% 
    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 

誰能幫我?

回答

1

注意:要標記此問題可能重複GAE ClassCastException Long cannot be cast to double但不能(因爲StackOverflow表示另一個問題沒有接受答案或答案積極分數)。


的異常意味着你至少有一個Store實體保存在數據存儲在您與屬性類型Blob但在Java實體指定它爲String並保存它,當你想查詢它並轉換它返回到Java類,嘗試轉換Blob - >String引發異常。

你可能做使用低級別的數據存儲區API是隻讀的所有Store entitites,並更改Blob性能String這應該是String擺在首位,然後重新保存這些實體(或更改類型的如果它應該是Blob,則從StringBlob的Java字段)。或者,如果當前實體不重要(例如測試數據),只需刪除它們。

文檔:Java low-level Datastore API

+0

如果只有一個或幾個實體這個問題,你還可以找到出錯的屬性在數據存儲瀏覽器,並手動將其重置爲null,然後再轉換爲String。 – 2014-10-08 18:56:17

0

對不起! 我解決了這個問題。 答:

修改

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

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