0

HRD Google アプリ エンジン データストアでネストされたエンティティ グループを使用しています。

X < Y を考慮すると、A < B < C は、X が Y の親であることを意味します。

すべての C は同じエンティティ グループ (A 1) に属していますか?

同じ親 A を持つすべての C を照会したいのですが、どうすればよいですか?

これは失敗しています: SELECT * FROM C WHERE ANCESTOR IS Key('A',1)

ヒントはありますか?

テストはデータストアの GQL で直接行われましたが、コードのスニペット (Ofy4 コード) を添付します。

あれは:

@Entity
@Cache
public class Site implements Serializable {
   private static final long serialVersionUID = 8611281648072797702L;

   @Id
   private Long id;
   private String url;
   ...
}

それはBです:

@Entity
@Cache
public class Accom implements Serializable, HasCapacity {

   @Id
   private Long id;
   @Parent
   private Key<Site> site;
   ...
}

それはCです:

@Entity
@Cache
public class Room implements Serializable, HasCapacity {

   @Id
   private Long id;
   @Parent
   private Key<Accom> accom;
   ...
}
4

2 に答える 2

2

Googleのドキュメントによると、これはうまくいくはずです。

およびhttp://code.google.com/appengine/docs/python/datastore/queries.html

祖先クエリ

データストア クエリを特定の祖先にフィルターして、その祖先を含むエンティティのみが結果に含まれるようにすることができます。言い換えれば、すべての結果は、祖先を親、または親の親などとして持ちます。パラメーターとして None を渡すと、祖先のないエンティティはクエリされず、エラーが返されます。

その他の有用な情報へのリンク: http://code.google.com/appengine/docs/python/datastore/gqlreference.html#Examples http://code.google.com/appengine/docs/python/datastore/entities.html

于 2012-03-19T15:56:01.587 に答える
0

問題が解決しました:

問題は、C の作成時に親キーが正しく作成されなかったことです。C の親キーは K(B) であり、常に親を含む K(A,B) であると想定されています。

こんな感じでエンティティグループを参照できます。ネストされているにもかかわらずエンティティ グループが 1 つしかないため、A への参照が必要です。

于 2012-03-22T09:27:04.187 に答える