我想使用密钥进行简单的Key-Only查询(以便测试数据存储区中是否存在)。
这是java中最简单的方法吗?
答案 0 :(得分:4)
是的,这是可能的!
尝试这样的事情:
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query gaeQuery = new Query(entityName);
gaeQuery.setKeysOnly();
gaeQuery.addFilter("__key__", FilterOperator.EQUAL, key);
PreparedQuery pq = datastore.prepare(gaeQuery);
List<Entity> results = pq.asList(FetchOptions.Builder.withLimit(1));
Key elementKey = null;
if (results.size() == 1) {
elementKey = results.get(0).getKey();
}
答案 1 :(得分:2)
为了按键检查一个实体的存在,最简单和最便宜的只是使用get()
:
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.get(KeyFactory.createKey(kind, long) )
Get(1读取操作)查询更便宜(1读+ 1小):http://code.google.com/appengine/docs/billing.html
答案 2 :(得分:0)
如果您想测试存在,可以使用Victor的建议,但取而代之的是:
return datastore.prepare(gaeQuery)
.countEntities(FetchOptions.Builder.withLimit(1)) > 0;