有人可以告诉我如何使用 Java 从 Google App Engine 数据存储中获取文本值吗?我在数据存储中有一些实体,其中包含名为 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
我在这里完全糊涂了。我的代码中唯一的字符串是用于获取正确属性的文字“longDescription”。如果我把它放在赋值行的上方:
log.warning("Type is " + (result.getProperty("longDescription")).getClass());
我看到以下输出:
WARNING: Type is class com.google.appengine.api.datastore.Text
好的,所以 result.getProperty("longDescription") 真的是一个 Text 对象,它作为一个对象被传回。我什至尝试使用完全限定名称 (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...>
我是不是在插入的时候搞砸了什么?如果是这样,您如何将文本项插入数据存储区?