我有一个类似于这个的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;
}
}