如何在通过继承共享通用抽象模型时使用Objectify的注释?

时间:2013-02-20 00:05:49

标签: google-cloud-datastore objectify

目前,我有一些抽象的模型类,它们具有其他具体模型的共同行为。例如,抽象的SearchableModel.class可能会被其他具体模型继承。

使用Objectify时,我想注释SearchableModel类,因为它需要持久化它自己的字段。但是,我对进行任何类型的多态查询都不感兴趣,我不想在数据存储区中使用任何类型的“SearchableModel”实体,只需要继承自SearchableModel的具体类。我应该如何处理@ Entity / @ EntitySubClass注释?

如果我使用@Entity注释抽象类和具体类,并且持久化/加载具体类的实例,它是否会按预期工作?

我知道我可以自己测试一下,但是,我还没有设置客观化。我仍在试图弄清楚它如何与我当前的模型一起使用。

关于如何组织这种依赖性的任何其他建议也受到赞赏。

谢谢。

1 个答案:

答案 0 :(得分:5)

  • 不要使用@EntitySubclass。
  • 从您的SearchableModel扩展。
  • 将@Entity放在您的(顶级)具体课程上。

这会给你想要的。您可以在基类中放置公共字段(使用Objectify注释,包括@ Id / @ Parent)和行为。不存在任何数据存储区多态性,每个@Entity都有自己的数据存储类型。