我正在使用java来编写GAE代码,我已经阅读了GAE Java低级API,但我找不到任何问题的答案。
我想知道是否有一种方法可以调用方法/执行JDOPL并返回数据存储区中所有不同类型的实体。
答案 0 :(得分:2)
您可以使用数据存储区统计信息API:
http://code.google.com/appengine/docs/java/datastore/stats.html
看起来__Stat_Kind__
统计信息会为您提供所需的信息。
答案 1 :(得分:2)
我找到了一个有效的解决方案here。 (截至2010年7月9日,它在本地部署服务器中不起作用)
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
PreparedQuery global = datastore.prepare(new Query("__Stat_Kind__"));
for( Entity globalStat : global.asIterable() )
{
Long totalBytes = (Long) globalStat.getProperty("bytes");
Long totalEntities = (Long) globalStat.getProperty("count");
String kindName = (String) globalStat.getProperty("kind_name");
resp.getWriter().println("[" + kindName + "] has " + totalEntities + " entities and takes up " + totalBytes + "bytes<br/>");
}
答案 2 :(得分:2)
您可以使用Metadata API。例如:
Query query = new Query(Entities.KIND_METADATA_KIND);
DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
Iterable<Entity> entityIterable = datastoreService.prepare(query).asIterable();
for(Entity entity : entityIterable) {
System.out.println("Entity kind: " + entity.getKey().getName());
}