2011-08-31 40 views
1

目前我得到的最高得分爲我從數據庫中的Android應用程序,如下從GAE數據存儲查詢:使用count

 Query query = pm.newQuery(PlayerPersistentData.class); 
    query.setOrdering("rating desc"); 
    query.setRange(0, 25); 

不過,我也想通過的計數命令的結果第二列:

例如在正常的SQL它會是這樣的:

select PlayerPersistentData.*, count(achievements) as achievements_count 
from PlayerPersistentData 
order by rating desc, achievements_count desc 

成就是在數據存儲中定義如下

@Persistent 
private Set<Integer> achievements; 

這可能使用的GAE數據存儲?如果是這樣,我應該如何創建我的查詢?

在此先感謝

回答

1

您需要進行非規範化:作爲一個單獨的字段存儲在你的實體的數量和查詢上那。

3

您可以使用該方法addSort您查詢的對象是這樣的:

query.addSort("rating", SortDirection.DESCENDING); 
query.addSort("achievements", SortDirection.DESCENDING); 
+0

嗨,我可以給它一個旋轉,但成就實際上是一套。對不起,我應該把它包括在原文中。 @持久 私人設置成就; –

+0

在這種情況下,我會使用準備好的查詢,迭代每個結果並從中獲得achievement.count。看到第一個代碼塊。 http://code.google.com/appengine/docs/java/datastore/queries.html這可能有更多的方法,但我的知識也是有限的。 – Rohan