2016-10-28 3 views
0

尋ねる:そのようなオブジェクトが見つからない場合ないそのKeyまたはその他のnullを返しているプロパティに基づいてGoogle App Engine Datastoreから単一Entityを取得する機能を。ここで1つのプロパティ値に基づいて単一のエンティティをクエリする最も良い方法は?

は、私が現在持っている機能である:

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

あなたは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(); 
} 

これとあなたのコードの間の唯一の本当の違いは、基礎となるクエリが2

LIMITを設定していることです
関連する問題