2017-11-28 13 views
0

私はデータストアにありオブジェクト化しています。私は2つの種類1-投稿2コメントを持っています。
投稿はコメントの親です。Objectifyの親子エンティティを結合する

objectifyに最近の3つのコメントを含むすべての投稿を取得したいと思います。
祖先関係を使用してコメントを取得する方法を知っています。しかし、私はこれらの投稿をどのように組み合わせて に投稿しています。

ofy().load().type(Comments.Class).ancestor(parentPostKey).limit(3).list(); 

私はすでにポストのidはとてもポストはまた、非常に簡単

ofy()で取得知っている負荷()キー(キー).now()。。。

しかし、これらの2つのクエリをどのように組み合わせることができますか。そして結果を単一のクラスに戻す。これのようなもの。

ResultClass results = // Combine query 

// Foreach 
results.getPost().getContent(); 
results.getComment().getContent(); 
// end Foreach 

可能かどうかもしそうでなければ、何が選択肢になりますか?

ご提案ください。

答えて

0

あなたは投稿の子供をコメントする必要はありません。これは様々な方法であなたを制限します。最も重要な点は、投稿にコメントを追加できる割合が1 /秒に制限されることです(すべてが同じエンティティグループに含まれるためです)。代わりに

、単にあなたのCommentエンティティにKey<Post>を保存:

@Entity 
public class Comment { 

    //... 

    @Index 
    Key<Post> parentPost; 

    //... 
} 

そして、単に特定の値にparentPost設定されているすべてのコメントを照会:また

ofy().load().type(Comment.class).filter("parentPost", postKey.getRaw()).limit(3).list(); 

を、あなたは格納することができPostクラスのCommentエンティティのKeysをList<Key<Comment>>に入力してから、@Loadというアノテーションを使用しますnを効率的にフェッチすることができますが、以前と同じレート制限の問題に直面します。

関連する問題