【问题标题】:Java google cloud endpoint existence queryJava 谷歌云端点存在查询
【发布时间】:2014-11-01 07:33:02
【问题描述】:
如何编写存在查询?基本上我有一个包含一堆数据的数据存储“表”,我想检查是否存在特定值。我想检查“存在”,如果存在这样的东西,会比查询匹配的所有内容然后检查getResultList().isEmpty() 或类似的要快得多。
我不介意 JPA 或数据存储查询中的建议
更多细节。假设我的实体的字段之一是名称,我想查找我的“表”中是否有人具有名称“约翰”。我不想要名称为“john”的所有实体的列表。我只是想知道这样的事情是否存在。
【问题讨论】:
标签:
java
google-app-engine
jpa
google-cloud-datastore
【解决方案1】:
我能想到的最好方法是运行一个仅命中索引且不进行实体提取的仅键查询。
Query query = new Query("SomeKind");
query.setFilter(new FilterPredicate("name", FilterOperator.EQUAL, "john"));
query.setKeysOnly();
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
List<Entity> entities = ds.prepare(query).asList(FetchOptions.Builder.withLimit(1));
if(entities.size() == 1) {
//Exists!
}