0

以下を含む親子エンティティモデルがあります。

    @PersistenceCapable(detachable = "true")
    public class Area implements Serializable {  
       @PrimaryKey
       private String name;

      @Persistent(mappedBy = "area")
      @Element(dependent = "true")
      private List<Category> categories;
    }


     @PersistenceCapable(detachable = "true")
     public class Category implements Serializable {

      @PrimaryKey
      @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
      @Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
      private String key; 

      @Persistent
      private Area area;
     }

すべてのエリアとそのカテゴリを取得する場合、結果をカテゴリ名で並べ替えることができますか?

JDO Query には setOrdering メソッドがあることがわかりましたが、それは子エンティティではなく、クエリを実行するエンティティのプロパティに適用されているようです。

現在、TreeMap を使用してソートを行っていますが、そのためには JDO/GSQL を使用する方がはるかに優れています。

4

1 に答える 1

2

いいえ - App Engine は結合クエリをサポートしていないため、子エンティティの属性を使用して親エンティティをクエリすることはできません。( https://developers.google.com/appengine/docs/java/datastore/jdo/relationships#Owned_One_to_Many_Relationships )。埋め込みクラス
のプロパティを照会できるため、ユース ケースに適しているかどうかを検討できます。

カテゴリに一意の名前がある場合は、カテゴリ名をカテゴリ エンティティ キー名の文字列として使用する別の設計を検討できます。次に、カテゴリ名の文字列のリストを各 Area エンティティに (インデックス付きの複数値プロパティとして) 格納できます。
このような設計では、所有関係に対する JDO のサポートではなく、子キー名のリストを介して親子関係を管理することになります。

于 2012-07-13T05:49:50.043 に答える