我有一个类似于这个的morphia模式:

@Entity
class BlogEntry {
    @Embedded
    List<BlogComment> comments
}

@Embedded
class BlogComment {
    String content
    Long authorId
}

(以上代码仅供说明)
我试图获得一个特定的博客评论,以便用新内容更新它。我有相应的blogEntry对象可用,还有authorID,就这个问题而言,这两个对象一起足以唯一地标识正确的blogComment。
我的问题是,blogComment没有显式地包含对其“父”blogEntry对象的引用,所以我如何编写morphia查询来检索这个blogComment?类似于:
//fetch the unique comment corresponding to this blog entry and this author ID.
BlogComment comment = ds.find(BlogComment.class, "blogEntryId =", blogEntry.id)
                        .filter("authorId", authorId)
                        .get();

最佳答案

既然已经有了博客条目对象,为什么不使用一个简单的Java循环来过滤它呢?

@Entity
class BlogEntry {

    @Embedded
    List<BlogComment> comments

    public BlogComment findCommentByAuthorId(String authorId) {
        if (null == authorId) return null;
        for (BlogComment comment: blogEntry.comments) {
           if (authorId.equals(comment.authorId) return comment;
        }
        return null;
    }

}

10-07 18:58