我正在尝试通过Java中的Objective查询App Engine数据存储。

我在本地存储了一些虚拟数据,但无法获得按键排序的结果。

这些是类:

家长班:

@Entity
public class Parent
{
    @Getter
    @Setter
    @Id
    long id;

    @Getter
    @Setter
    String type;

    public Parent() {
    }
}


主班

@Entity
@Cache
@Index
public class MainObject
{
    @Getter
    @Setter
    @Id
    long id;

    @Getter
    @Setter
    @Unindex
    String url;

    @Getter
    @Setter
    Date date;

    @Parent
    @Getter
    @Setter
    Key<Parent> type;

    public MainObject() {

    }
}


问题是我想得到这个查询:

Key<Parent> parent = Key.create(Parent.class, 1);

MainObjectlastUrl = OfyService.ofy().load().type(MainObject.class).ancestor(parent).order("-key").first().now();


这将返回null。

List<MainObject> list = OfyService.ofy().load().type(MainObject.class).ancestor(parent).order("-key").list();


这将返回一个空列表。

但是,如果删除订单查询,则会得到所有实体。

list = OfyService.ofy().load().type(MainObject.class).ancestor(parent).list();


有任何想法吗?

我已经检查过Objectify网页,但是找不到很多。

提前致谢。

最佳答案

神奇的Google字段表示键为__key__(每侧两个下划线)。这是GAE内置的,因此您需要order("-__key__")

Objectify可以在查询中提供orderKey(boolean)方法,以使其更加方便。如果将其添加到问题跟踪器中,我将实现它。

10-06 08:42