Как получить родительское имя из дочернего имени, используя SQL из JCR

У меня есть структура узла ниже в репозитории JCR. Я изо всех сил пытаюсь получить родительский (12345) узел с учетом дочернего узла (789).

/12345/предметов/789

I have tried:
SELECT parent.* 
FROM [nt:base] AS parent 
INNER JOIN [nt:base] AS child ON ISCHILDNODE(child,parent)
WHERE name(child) = '789'

но я продолжаю получать результат «Этот результат запроса содержит более одного селектора».

Я должен сделать это, используя sql или jcr-sql2, я не хочу использовать java, например, для получения родителя родителя.

заранее спасибо


person webDeveloper    schedule 05.09.2014    source источник


Ответы (2)


Как упомянул Рэндалл выше, запрос вполне действителен.

Я бы не догадался, но поскольку вы пометили это как Magnolia, я предполагаю, что вы пытались выполнить этот запрос через приложение AdminCentral/Dev/JCRQueries. Это приложение не поддерживает селекторы. Вот и весь вопрос. Если вы запустите его через консоль groovy, используя скрипт, аналогичный приведенному ниже, он будет работать нормально.

query = "SELECT parent.*  FROM [nt:base] AS parent  INNER JOIN [nt:base] AS child ON ISCHILDNODE(child,parent) WHERE name(child) = '789'"
MgnlContext.getJCRSession("your_workspace").workspace.queryManager.createQuery(query,"JCR-SQL2").execute()

ХТХ, янв.

person Jan    schedule 08.09.2014

Язык JCR SQL не поддерживает соединения.

С другой стороны, язык JCR-SQL2 поддерживает соединения. На самом деле, я только что попробовал именно этот запрос JCR-SQL2, и он прекрасно работает в ModeShape.

person Randall Hauch    schedule 05.09.2014