问:根据不其Entity
的属性从Google App Engine Datastore检索单 Key
的函数如果没有找到这样的对象,则返回null
。
这是我目前的功能:
public Entity find(DatastoreService datastore, String kind, String property, String value) {
Filter propertyFilter =
new FilterPredicate(property, FilterOperator.EQUAL, value);
Query q = new Query(kind).setFilter(propertyFilter);
List<Entity> results =
datastore.prepare(q).asList(FetchOptions.Builder.withDefaults());
if (results.isEmpty()) {
return null;
}
return results.get(0);
}
我可以使用一次性API吗?或者是否有任何优化建议?
答案 0 :(得分:0)
您可以使用PreparedQuery#asSingleEntity()
:
public Entity find(DatastoreService datastore,
String kind, String property, String value)
throws TooManyResultsException {
Filter propertyFilter =
new FilterPredicate(property, FilterOperator.EQUAL, value);
Query q = new Query(kind).setFilter(propertyFilter);
return datastore.prepare(q).asSingleEntity();
}
此代码与您的代码之间唯一真正的区别是基础查询将LIMIT
设置为2。