我有一个类似于这个的Morphia架构:
@Entity
class BlogEntry {
@Embedded
List<BlogComment> comments
}
@Embedded
class BlogComment {
String content
Long authorId
}
(上面的代码只是为了说明)
我正在尝试获取特定的BlogComment,以便使用新内容更新它。我有相应的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();
答案 0 :(得分:3)
既然你已经拥有博客条目对象,为什么不使用简单的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;
}
}