Новейшие объекты из хранилища данных GAE с JDO? - PullRequest
1 голос
/ 29 января 2011

У меня есть класс «Сообщение» в приложении Google App Engine, и я хочу получить последние (самые новые) из хранилища данных; как 20 новейших сообщений. Это выглядит просто, но я не знаю, как создать такой запрос с помощью JDO.

Ответы [ 2 ]

2 голосов
/ 29 января 2011

Прежде всего, вам нужно будет хранить временную метку для каждой 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();

(я не проверял это, оно может не работать)

0 голосов
/ 29 января 2011
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;
}
...