1
我在Google App Engine應用程序中有一個'Message'類,我想從數據存儲中檢索最後一個(最新的)類;像20條最新的消息。它看起來很基本,但我不知道如何用JDO創建這樣的查詢。使用JDO的GAE數據存儲的最新對象?
我在Google App Engine應用程序中有一個'Message'類,我想從數據存儲中檢索最後一個(最新的)類;像20條最新的消息。它看起來很基本,但我不知道如何用JDO創建這樣的查詢。使用JDO的GAE數據存儲的最新對象?
首先,您必須在每個Message
實體上存儲時間戳。然後,當這樣做:
public List<Person> get20NewestMessages() {
Query q = new Query("Message")
q.addSort("timestamp", SortDirection.DESCENDING);
PreparedQuery pq = ds.prepare(q);
return pq.asList(FetchOptions.Builder.withLimit(20));
}
編輯正如你指出的那樣,這種使用低級別的數據存儲。這裏有一個JDO例如嘗試:
Query query = pm.newQuery(Message.class);
query.setOrdering("timestamp desc");
query.setRange(0, 20);
List<Message> messages = (List) query.execute();
(我沒有測試過這一點,它可能無法正常工作)
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.jdo.Transaction;
...
public List<Message> get20NewestMessages() {
PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = pm.newQuery(Message.class);
q.setOrdering("timestamp desc");
q.setRange(0, 20);
List<Message> messages = (List<Message>) q.execute();
return messages;
}
解決方案使用低級別的Java數據存儲API,但它給了我所有的我需要用JDO來完成這些工作。非常感謝。 – Pascal 2011-01-29 04:12:36