有人能告訴我如何使用Java從Google App Engine數據存儲中獲取Text值嗎?我在數據存儲中有一些名爲longDescription的Text屬性的實體。當我試試這個:如何從應用程序引擎數據存儲獲取文本?
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("Items");
PreparedQuery pq = ds.prepare(q);
for (Entity result : pq.asIterable()) {
Text longDescription = (Text)result.getProperty("longDescription");
}
我得到的longDescription分配行這樣的警告:
WARNING: /pstest
java.lang.ClassCastException: java.lang.String cannot be cast to
com.google.appengine.api.datastore.Text
我絕對bumfuzzled這裏。 只有我的代碼中的字符串是用來獲取正確屬性的文字「longDescription」。如果我把這個剛分配線以上:
log.warning("Type is " + (result.getProperty("longDescription")).getClass());
我看到下面的輸出:
WARNING: Type is class com.google.appengine.api.datastore.Text
好了,所以result.getProperty(「longDescription」)真的,真的是一個文本對象,被作爲對象傳回。我甚至嘗試使用完全限定的名稱(com.google.appengine.api.datastore.Text),而不僅僅是具有相同結果的Text。絃樂隊在哪裏演奏?更重要的是,如何從數據存儲庫中獲取文本?我在我的智慧結束在這裏,任何幫助將不勝感激!
哦,另外一個可能相關的注意:這是將都歸到數據存儲時,我使用的分配:
Entity eItem = new Entity("Items");
eItem.setProperty("longDescription", new Text(req.getParameter("ldes")));
ds.put(eItem);
當我看到在我的管理控制檯的描述中,這似乎是超過500字符,它的顯示方式如下:
<Text: This is a long form description of an item in the store that is access...>
插入時有東西擰了嗎?如果是這樣,你如何將文本項插入數據存儲?
看起來'result.getProperty(「longDescription」)'返回一個字符串。由於[文本](https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Text)只是一個字符串的較大容器,爲什麼不使用字符串直?或者,如果您需要使用Text對象,請使用查詢結果創建一個新的Text對象?我不確定您的問題是詢問從數據存儲獲取Text對象還是將Text對象插入數據存儲。 – 2012-07-09 05:45:30
我確定'result.getProperty(「longDescription」)'沒有返回一個字符串。如果我記錄'(result.getProperty(「longDescription」))。getClass()。toString()',它告訴我它是'com.google.appengine.api.datastore.Text'類。其實我試圖將文本轉換爲字符串,我知道如何做到這一點(在文本中使用'getValue()'方法)。問題是首先將文本從數據存儲區中取出。 – 2012-07-09 05:51:15
如果result.getProperty(「longDescription」)返回字符串,它不能被類型轉換爲文本?像((文本)entity.getProperty(「longDescription」))。getValue()。爲什麼它會拋出類型轉換異常? – 2016-04-05 11:15:51