Java 如何从Google数据存储中检索数据?
我使用Javaservlet。我写了一个没有错误的代码,但它总是返回一个空列表。 我不想从servlet更新数据存储。我只想读实体。我会附上我的密码告诉我哪里出了问题 我总是得到数据存储是空的。这只是一个测试代码。即使这样似乎也能工作。在网上搜索了一周。一切都是徒劳的Java 如何从Google数据存储中检索数据?,java,google-app-engine,servlets,google-cloud-datastore,Java,Google App Engine,Servlets,Google Cloud Datastore,我使用Javaservlet。我写了一个没有错误的代码,但它总是返回一个空列表。 我不想从servlet更新数据存储。我只想读实体。我会附上我的密码告诉我哪里出了问题 我总是得到数据存储是空的。这只是一个测试代码。即使这样似乎也能工作。在网上搜索了一周。一切都是徒劳的 public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp)
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, world");
DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
resp.getWriter().println(datastoreService.getIndexes());
if (datastoreService.getIndexes().isEmpty())
resp.getWriter().println("the data store is empty");
Query query = new Query("IMAGES");
PreparedQuery pq = datastoreService.prepare(query);
for (Entity entity :pq.asIterable())
{
resp.getWriter().println(entity.getKind() );
resp.getWriter().println(entity.getAppId() );
resp.getWriter().println(entity.getKey() );
}
if (!pq.asIterable().iterator().hasNext())
resp.getWriter().println("the data store is empty");
}
我纠正了我的问题。我忘了添加名称空间。下面是一个关于如何在GAE数据存储中设置名称空间的片段
// Set the namepace temporarily to "abc"
String oldNamespace = NamespaceManager.get();
NamespaceManager.set("abc");
try {
... perform operation using current namespace ...
} finally {
NamespaceManager.set(oldNamespace);
}
这是已部署的还是正在devserver中运行?另外,如果你使用谷歌管理工具,你能在数据存储查看器中看到实体吗?是的,它已经部署。我部署它是为了学习。我确实使用开发人员控制台在数据存储中添加了实体。当查询求值时,它总是返回空。