2013-11-21 57 views
2

我需要這種形式的JCR SQL查詢CQ5 JCR查詢:在多條路徑

select * from jcr:content where cq:template like '%myTemplate%' and (jcr:path like '%path1%' or jcr:path like '%path2%') 

但我得到一個異常說「不正確地使用財產JCR的:道路」是否有一個快速的解決方法這個 ?根據用戶的選擇,每次搜索的路徑數量可能會有所不同。

回答

1

正如您已經注意到的,在JCR查詢中不可能使用多個路徑比較。這裏有幾個選項:

  1. 創建一些查詢,每個路徑一個。
  2. 將一些自定義屬性添加到jcr:content節點,標記您感興趣的頁面並使用它代替路徑。
  3. 遍歷path1path2子樹而不是查詢它們。
+0

是的..我注意到...它不允許查詢多個路徑。所以我只是使用它們的父對象進行查詢,然後迭代結果列表以篩選出期望的結果。謝謝 –

2

我在CQ的查詢工具中嘗試了下面的查詢,它工作。

SELECT * FROM [cq:PageContent] WHERE [cq:PageContent].[cq:template] LIKE '%content%' AND (isdescendantnode('/content/geometrixx/fr/') OR isdescendantnode('/content/geometrixx/en/')) 

但ISDESCENDANTNODE需要一個絕對路徑,我認爲相對的路徑不工作。

+1

SQl2在同一時間在不同的路徑上工作。以上@Rakhi的例子似乎有效。您必須記住,如果所有的後代路徑條件未組合在括號中,則應將所有不同的路徑放在一個括號中,查詢開始發出不良結果。像(isdec(path1)或/和isdec(path2))並不像isdesc(path1)或/和idesc(path2) –