2012-06-27 33 views
0

我有這個功能:如何使用的應用程序引擎數據存儲查詢的複合過濾?

@Override 
    public List<Expense> getExpensesBetween(Date firstDate, Date secondDate) { 

    Query query = new Query(expenseEntityKind); 

    query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, secondDate); 

    query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, firstDate); 

    Iterable<Entity> entities = service.prepare(query).asIterable(); 

    return getReturnedExpenses(entities); 
    } 

我想兩個日期之間返回所有的費用即大於或等於2012-05-01並且小於或等於2012-06-01。我看了一下Google應用引擎的documentations。它說我們必須使用複合濾波器。谷歌單證:「不過,如果你想設置一個以上的過濾器上的查詢時,你必須使用CompositeFilter您必須至少有兩個過濾器使用CompositeFilter然而,這單證似乎是老了,沒有發現任何。功能調用setFilter();。任何建議如何創建一個複合過濾器?我使用App-engine sdk 1.6.6。在此先感謝。

回答

0

您正在查看的文檔是最新版本(1.7.0)。剛被介紹。Here如何使用CompositeFilter(1.7.0也)的例子。

+0

感謝你的回覆。 – Adelin

1

以下是從https://cloud.google.com/appengine/docs/java/datastore/queries取這可能是這裏

有幫助210
Filter heightMinFilter = 
    new FilterPredicate("height", 
         FilterOperator.GREATER_THAN_OR_EQUAL, 
         minHeight); 

Filter heightMaxFilter = 
    new FilterPredicate("height", 
         FilterOperator.LESS_THAN_OR_EQUAL, 
         maxHeight); 

//Use CompositeFilter to combine multiple filters 
Filter heightRangeFilter = 
    CompositeFilterOperator.and(heightMinFilter, heightMaxFilter); 
+0

這個答案適合我。接受的答案在答案中沒有代碼示例,只是鏈接到主要Java文檔頁面。 – claytronicon

相關問題