0

有没有办法定义一个实体层次结构,可以只查询特定的子类?考虑下面的情况。让我们有一个抽象的基类,它定义了公共属性和具体的子类 A 和 B。

class abstract Base {
...
}

class A extends Base {
...
}

class B extends Base {
...
}

我想运行如下示例查询。

  • 检索类型 A 和 B 的所有实体

     Base base = this.objectify.load().type(Base.class).list();
    
  • 检索所有类型 A 的实体

     Base base = this.objectify.load().type(A.class).list();
    
  • 检索所有类型 B 的实体

     Base base = this.objectify.load().type(B.class).list();
    

此外,我们希望将所有此类实体作为单一类型(基本实体)存储在 GAE 数据存储中。

我们尝试使用此处描述的相关实体类的多态层次结构:

https://code.google.com/p/objectify-appengine/wiki/Entities#Polymorphism

但这似乎无法处理具有共同父级的多个实体子类的情况。

4

1 回答 1

0

我不认为Base可以是抽象的,但这应该可行:

@Entity
class Base { ... }

@EntitySubclass(index=true)
class A extends Base { ... }

@EntitySubclass(index=true)
class B extends Base { ... }

如果您希望能够按多态类型进行查询,则必须对要查询的类型进行索引。

于 2013-10-06T18:21:07.953 回答