0

特定のサブクラスだけを照会できるエンティティ階層を定義する方法はありますか? 以下の状況を検討してください。共通のプロパティと具体的なサブクラス A と B を定義する抽象 Base クラスを用意しましょう。

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 Datastore に格納したいと考えています。

ここで説明する関連するエンティティ クラスのポリモーフィック階層を使用しようとしました。

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 に答える