2011-09-11 9 views
0

私は2つのクラス:ParentChildを持っています。親には子オブジェクトのリストがあり、子オブジェクトには親への参照が@Persistent (mappedBy = "parent")を使用しています。JDOを使用してAppEngineのMany-To-Oneでエンティティをフィルタリングする方法

子オブジェクトをその親属性でフィルタリングするにはどうすればよいですか? 私は試しましたquery.setFilter("parent.key == " + parentKey);しかし、それは動作しませんでした。親の属性を何らかの方法で子にマップする必要がありますか?

私はここではほぼ同じようにHow to filter entities by their parents in ManyToOne side in Google App Engineと尋ねていますが、JPAではなくJDOを使用しています。

答えて

3

できません。これには、App Engineデータストアでサポートされていない結合が必要です。その代わりに、親基準に一致するすべての親をフェッチし、子の各結果に対して個別のクエリを実行するか、または非正規化して、気になるプロパティを子エンティティに追加します。

+0

回答ありがとうございます!しかし、それはなぜ親がそれ自身をフェッチするために使用できない場合、その子はその親にリンクする属性を持っていますか? –

+1

@Robこれは、親を取得するために使用できます。クエリ内の親のプロパティを参照するためには使用できません。特定の親を持つすべての子を照会するだけの場合は、JDOではサポートされていない祖先照会です(低レベルのAPIでのみサポートされています)。http://code.google.com/appengine /docs/java/datastore/queries.html。データベースフレームワークの選択肢がある場合は、Objectifyに切り替えることを強くお勧めします。 –

+0

返信いただきありがとうございます。私はObjectifyを試し、データベースブリッジを再コード化するかどうかを選択します。 –

関連する問題