【问题标题】:Objectify - Retrieve subclass instances with superclass queryObjectify - 使用超类查询检索子类实例
【发布时间】:2026-01-13 01:40:02
【问题描述】:

对于我正在制作的项目,我正在使用 Objectify 和 Google AppEngine

我引用了来自Google Groups 的旧消息,但我遇到的问题是一样的:

这是我要解决的问题:我想保留实例 一个超类的几个子类到数据存储区,然后 通过查询该超类来检索它们。

(例如,Game 的查询将返回 ChessBackgammon 的实例。

有没有什么方法可以使用 Objectify 来完成?

因为我想要的东西是一样的,但是这个话题还没有提供答案(它已经 3 岁了),我带着同样的问题搬到了这里。

作为配置,我在 Objectify 上使用了多态性。 我有一个用“@Entity”注释的“Game”类和 2 个扩展 Game 的类(“Chess”和“Backgammon”),用“@Subclass”注释。

如果我查询“游戏”,我会得到 2 个游戏实例。但我想获得国际象棋和双陆棋实例

从2010年到现在,这个问题解决了吗?

谢谢 再见

【问题讨论】:

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


    【解决方案1】:

    如果你使用objectify's polymorphism,那可不简单:只查询父类。

    注意:objectify 中的多态性是通过在实体中添加特殊的隐藏字段(^d^i)来标记子类的类型。因此,所有具有相同父类的对象都将具有相同的实体类型(由父类上的@Entity 定义)。

    【讨论】:

      【解决方案2】:

      该 google 组链接是古老的,并且早于 Objectify 中多态性的实现。是的,Objectify(很长一段时间以来)支持带有 @EntitySubclass 注释的多态性。

      彼得的回答是正确的。如果您没有看到预期的行为,那么您做错了什么,需要在问题中更详细地阐述或(更好地)发布到 objectify google 组。

      【讨论】: