Objectify 5 的多态性

Polymorphism with Objectify 5

我有这个 类:

@Entity(name = "Post")
public abstract class PostRecord {

    @Id
    private Long id;
    private String field1;
}

@Subclass(name = "Bulletin")
public class BulletinRecord extends PostRecord {

    private String field2;
}

@Subclass(name = "Session")
public class SessionRecord extends PostRecord {

    private String field3;
}

如何获取所有公告或所有会话?

下面的代码工作正常,return 一个包含所有公告和会话的 post 列表:

ofy().load().type(PostRecord.class).list();

但我只想要公告或会议,当我尝试下面的代码时,我得到一个空列表:

ofy().load().type(BulletinRecord.class).list();
ofy().load().type(SessionRecord.class).list();

您需要为子类鉴别器编制索引。

@Subclass(name = "Bulletin", index = true)
public class BulletinRecord extends PostRecord {
}

GAE中的所有过滤(例如子类过滤)都需要一个索引;索引有成本; Objectify 要求您选择加入此费用。