Morphia / MongoDB: доступ к «встраиваемому» объекту из объекта @Embedded - PullRequest
2 голосов
/ 16 января 2012

У меня есть схема Morphia, похожая на эту:

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

@Embedded
class BlogComment {
    String content
    Long authorId
}

(код выше только для иллюстрации)

Я пытаюсь получить определенный BlogComment, чтобы обновить его с помощьюновый контент.У меня есть соответствующий объект BlogEntry, и у меня есть authorId, который, скажем, для целей этого вопроса, что этих двух вместе достаточно, чтобы однозначно идентифицировать правильный BlogComment.

Мой вопрос, BlogComment явно несодержит ссылку на его «родительский» объект BlogEntry, так как я могу написать запрос морфия для получения этого 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(); 

1 Ответ

3 голосов
/ 18 января 2012

Поскольку у вас уже есть объект записи в блоге, почему бы не использовать простой цикл 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;
    }

}
...