Поиск многозначных свойств JCR SQL2 - PullRequest
7 голосов
/ 01 ноября 2011

Я хочу выполнить поиск в хранилище содержимого, используя одно или несколько значений в качестве входного параметра для многозначного свойства Примерно так: найти все узлы с основным типом 'nt: unstructured', чье свойство 'multiprop' (многозначное свойство) содержит оба значения: «один» и «два».

Каким образом строка запроса, передаваемая в queryManager.createQuery, должна выглядеть примерно так?

Спасибо.

1 Ответ

13 голосов
/ 02 ноября 2011

Вы можете рассматривать критерии для многозначных свойств так же, как и другие критерии.Например, следующий запрос найдет все узлы, которые имеют значение «white dog» в свойстве «someProp»:

SELECT * FROM [nt:unstructured] WHERE someProp = 'white dog'

Если свойство «someProp» имеет несколько значений, то узел с atкак минимум одно значение, удовлетворяющее критериям, будет включено в результаты.

Чтобы найти узлы, которые имеют несколько значений многозначного свойства, просто И вместе несколько критериев.Например, следующий запрос вернет все узлы, которые имеют оба указанных значения:

SELECT * FROM [nt:unstructured] WHERE someProp = 'white dog' 
                                  AND someProp = 'black dog'

Будет работать любой из операторов, включая 'LIKE':

SELECT * FROM [nt:unstructured] WHERE someProp LIKE '%white%'  
                                  AND someProp LIKE '%black%'

Другие комбинациивозможны, конечно.

...