2013-06-07 2 views
4

Я использую приложение, в котором мы можем манипулировать узлами JCR, как правило, вы должны переименовывать, удалять, удалять или перемещать их.JCR SQL2 - порядок запроса результата, как в браузере JCR

Используя JCR API, я могу получить доступ к узлам в моем репозитории и вернуть набор узлов в том же порядке, что и в JCR.

Я хотел был бы иметь возможность сделать то же самое с помощью запросов JCR SQL2. Я ничего не нашел об этом & теперь начинаю верить, что это невозможно.

Например, если у меня есть дерево JCR, такие как:

parentNode 
|_childNode1 
|_childNode2 
|_childNode3 
|_childNode4 

При выполнении запроса с использованием JCR SQL2 было бы вернуть их в порядке, отличном от: childNode1, childNode2, childNode3, childNode4

Я смотрю в эти документы среди прочего: http://docs.jboss.org/jbossdna/0.7/manuals/reference/html/jcr-query-and-search.html#jcr-sql2-query-language http://www.day.com/specs/jcr/2.0/6_Query.html

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


EDIT: при использовании Java для поиска вариант, вы можете захотеть взглянуть на Recursive search in JCR repo via java

, вероятно, не самый эффективный, хотя, так возражаете удар по производительности.

ответ

4

Вы пытались установить свойство "respectDocumentOrder" в true в Jackrabbit Search Configuration?

Если значение true и запрос не содержат предложение «order by», то узлы результатов будут в порядке документа. Для лучшей производительности, когда запросы возвращают множество узлов, установленных на «false» (в 1.5 «false» теперь используется по умолчанию).

Вы должны установить его в true, только если вам это нужно, потому что результаты запроса будут полностью итерации в Java, чтобы отсортировать их.

+1

Большое спасибо @jfranktzius. Вы знаете, есть ли способ сделать это программно для конкретного запроса? –

+0

Я создал вопрос о JIRA Magnolia, надеясь, что они сделают это по умолчанию. http://jira.magnolia-cms.com/browse/MAGNOLIA-5301 –

2

Единственный способ указать порядок результатов запроса - использовать предложение ORDER BY в вашем запросе. Если вы этого не сделаете, реализация будет бесплатной для возврата узлов в любом порядке.

Но я не знаю, в JCR-SQL2, чтобы указать «естественный порядок» (мой термин) дочерних узлов под родителем.

+0

Я думаю, вы правы: нет способа указать «естественный порядок», как вы его называете. На данный момент я буду отмечать ваш ответ правильно, если не будет доказано, что это неправильно. –

Смежные вопросы