Objectify - 使用超类查询检索子类实例

时间:2013-11-11 09:49:47

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

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

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

  

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

     

(例如,对游戏的查询会返回国际象棋步步高的实例)。

     

有没有办法用Objectify来实现这个目标?

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

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

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

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

由于 再见

2 个答案:

答案 0 :(得分:1)

如果您使用objectify's polymorphism,那么就不简单了:只查询父类。

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

答案 1 :(得分:0)

google group链接很古老,早于Objectify中多态的实现。是的,Objectify(现在很长一段时间)支持@EntitySubclass注释的多态性。

彼得的回答是正确的。如果你没有看到预期的行为,那么你做错了什么,需要在问题中详细说明,或者(更好)发布到客观化的谷歌小组。