如何使用objectify以反向存储顺序从数据存储中检索实体?

时间:2013-12-23 12:03:13

标签: google-app-engine google-cloud-datastore objectify

我有以下实体:

@Entity
public class ActionIndex extends EntityObjectAutoID {

    @Parent Ref<Action> action;
    @Id Long id;
    @Index List<Long> receivers;
....
}

我想检索添加到数据存储区的最新10个实体的密钥。但是如果我使用这个查询:

ofy().load().type(ActionIndex.class).limit(10).keys().list(); 

当然我得到前10个实体而不是最后10个实体。根据Objectify's doc

  

如果此查询仅限于Class,则可以对@Id属性进行排序   没有@Parent。请注意,这仅适用于降序   排序;默认迭代是键升序。

     

您无法对@Parent属性进行排序。

由于我的班级有父母(我需要它),我该怎样做才能让实体反向添加顺序,而不必添加额外的时间戳属性?

1 个答案:

答案 0 :(得分:0)

我发现了怎么做。要按键排序,您只需使用__key__作为属性。对于过滤,有一个名为filterKey的便捷方法,但就我所见,它的等效排序(orderKey)不存在。

ofy().load().type(ActionIndex.class).order("-__key__").limit(10).keys().list();

---编辑----

根据以下评论,似乎必须使用Date属性。