У меня есть морфий схема, похожая на этот:Морфий/MongoDB: Доступ к «встраивание» объект из @Embedded объекта
@Entity
class BlogEntry {
@Embedded
List<BlogComment> comments
}
@Embedded
class BlogComment {
String content
Long authorId
}
(код выше только для иллюстрации)
Я пытаюсь получить конкретный блогкомментарий, чтобы обновить его новым контентом. У меня есть соответствующий объект BlogEntry, и у меня есть authorId, который, скажем, для целей этого вопроса, что этих двух вместе достаточно, чтобы однозначно идентифицировать правильный Блогкомментарий.
Мой вопрос в том, что в 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();
Благодарим за отзыв. Я считал, что цикл BlogComments работает, но похоже, что это будет медленным. Еще одна возможность, которую я рассмотрел, - добавить в BlogCom поле «blogEntryId», которое содержит идентификатор родительского объекта. Это может быть быстрее, но, похоже, не будет явно явным образом хранить идентификатор объекта внедрения внутри каждого внедренного объекта. Есть ли неявный дескриптор родителя? – mindthief
Перемещение по списку - это операция в памяти, должно быть намного быстрее, чем вы получаете что-либо из базы данных, потому что последнее включает в себя межпроцессорную связь, диск IO (может быть отказано из-за кеша) и т. Д. Другое дело, что вы не может позволить запросу морфии возвращать только встроенный объект. –
Ну ладно, хороший вызов в режиме «доступ к памяти» и доступ к базе данных. Да, похоже, Morphia-запросы даже с использованием «точечной нотации» будут возвращать только родительские объекты, а не внедренные объекты. Использование цикла, кажется, путь, спасибо за вашу помощь! – mindthief