Организовать объекты, добавленные в GAE, первыми, когда они будут добавлены?
Я создал клиент для Google App Engine, используя eclipse и демо-версию Android для Google. Я создал бэкэнд и несколько моделей. Когда я добавляю сущности из android в свою базу данных на GAE, она упорядочивает их по дате, а не по самой новой, созданной первой. Ключ это просто текущая дата и галстук на андроид. Я не уверен, как работать с серверной частью, так как Google создал его для меня в моем проекте. Есть ли быстрое изменение, которое я могу внести в него, или вместо этого, упорядочив его по данным, когда я добавлю элемент, он просто будет держать самые новые списки сверху?
Отредактированный вопрос, это мой класс конечной точки, созданный Google для меня. Как я могу изменить его, чтобы получать новые добавленные объекты первыми?
@Api(name = "quotesendpoint", namespace = @ApiNamespace(ownerDomain = "projectquotes.com" ownerName = "projectquotes.com", packagePath = ""))
public class quotesEndpoint {
/**
* This method lists all the entities inserted in datastore.
* It uses HTTP GET method and paging support.
*
* @return A CollectionResponse class containing the list of all entities
* persisted and a cursor to the next page.
*/
@SuppressWarnings({ "unchecked", "unused" })
@ApiMethod(name = "listquotes")
public CollectionResponse<quotes> listquotes(
@Nullable @Named("cursor") String cursorString,
@Nullable @Named("limit") Integer limit) {
EntityManager mgr = null;
Cursor cursor = null;
List<quotes> execute = null;
try {
mgr = getEntityManager();
Query query = mgr.createQuery("select from quotes as quotes");
if (cursorString != null && cursorString != "") {
cursor = Cursor.fromWebSafeString(cursorString);
query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
}
if (limit != null) {
query.setFirstResult(0);
query.setMaxResults(limit);
}
execute = (List<quotes>) query.getResultList();
cursor = JPACursorHelper.getCursor(execute);
if (cursor != null)
cursorString = cursor.toWebSafeString();
// Tight loop for fetching all entities from datastore and accomodate
// for lazy fetch.
for (quotes obj : execute)
;
} finally {
mgr.close();
}
return CollectionResponse.<quotes> builder().setItems(execute)
.setNextPageToken(cursorString).build();
1 ответ
Порядок, который вы видите в средстве просмотра хранилища данных в GAE, не имеет существенного значения, поскольку он представляет собой просто отображение текущих данных в вашем хранилище данных и отображается в порядке возрастания идентификатора объекта (если используется автоматический идентификатор). По совпадению это также может иметь возрастающий порядок дат. Вы не можете изменить этот шаблон отображения.
Важен порядок ваших запросов, который определяется индексами. Таким образом, если вам нужно перевести ваши сущности в порядке убывания даты, то если ваша запись даты останется индексированной, GAE автоматически получит индекс даты. Вам просто нужно запросить ваши объекты, указав нисходящий порядок сортировки в свойстве date.
РЕДАКТИРОВАТЬ: На основе добавленного кода, ниже изменения должны быть сделаны для запроса сущностей в порядке убывания даты.
1, добавьте новую дату в свой объект:
private Date entrydate;
2. При создании объекта добавьте текущую дату к этому свойству.
yourentity.setEntryDate(new Date())
3, во время запроса, установите порядок на основе убывания даты
query.setOrdering("entrydate desc");