【发布时间】:2011-01-29 01:38:23
【问题描述】:
我在 Google App Engine 应用程序中有一个“消息”类,我想从数据存储中检索最后(最新)的;喜欢 20 条最新消息。它看起来很基础,但我不知道如何使用 JDO 创建这样的查询。
【问题讨论】:
标签: google-app-engine google-cloud-datastore jdo
我在 Google App Engine 应用程序中有一个“消息”类,我想从数据存储中检索最后(最新)的;喜欢 20 条最新消息。它看起来很基础,但我不知道如何使用 JDO 创建这样的查询。
【问题讨论】:
标签: google-app-engine google-cloud-datastore jdo
首先,您必须在每个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));
}
edit 正如您所指出的,这使用了低级数据存储。下面是一个 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;
}
【讨论】: