Поиск Hippo CMS в связанных бинах - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть компонент-бегемотик, содержащий список гиппопотамов в виде связанных элементов.

  @HippoEssentialsGenerated(internalName = "example:comment")
public List<HippoBean> getComment() {
    return getLinkedBeans("comment", HippoBean.class);
}

Теперь я хочу создать запрос для получения комментариев вроде этого:

hstQuery = HstQueryBuilder.create(scope)
            .ofTypes(Article.class)
            .where(constraint("example:comment").contains("good job"))
            .build();

Идея состоит в том, чтобы извлечь все статьи так, чтобы комментарии, связанные с ними, содержали строку «хорошая работа». Пока этот запрос ничего не возвращает. Можно ли заглянуть внутрь массива HippoBeans, связанного как LinkedBeans с другим HippoBean? И если так, как это может быть достигнуто? Я видел примеры, которые позволяют искать текст в одном свойстве, например:

 HstQuery hstQuery = HstQueryBuilder.create(scope)
            .ofTypes(BaseDocument.class)
            .where(constraint("title").contains("Hello World"))
            .limit(pageSize)
            .offset(pageSize * (pageNum - 1))
            .orderByDescending("mynamespace:date")
            .build();

в этом случае запрос возвращает только те документы, что их заголовок содержит строку «Hello World»

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

При этом будут возвращены все документы комментариев, содержащие ссылку на документ статьи:

ContentBeanUtils.createIncomingBeansQuery(article,scope,"example:comment/@hippo:docbase,Comment.class,false)

Первый аргумент - это конкретный экземпляр класса article, который был связан несколькими комментариями.

Для более подробного объяснения см .: https://www.onehippo.org/library/concepts/search/search-all-hippodocument-beans-that-have-a-link-to-a-hippodocument-you-have.html

0 голосов
/ 07 сентября 2018

Пример: комментарий - это не комментарий, это ссылка на комментарий. Таким образом, этот запрос ищет строку «хорошая работа» в uuid. К сожалению, вы не можете создать этот запрос так, как вы хотите. Вам понадобится второй запрос для каждой статьи, чтобы найти эту информацию. Или запросить все комментарии на «хорошую работу» и получить статьи, связанные с ними. В любом случае это будет дорого.

...