2014-08-30 29 views
0

我們有一些節點的屬性不正確,其中cq:title不等於cq:summary(我們希望它們始終相等)。爲了找到他們,我鍵入:JCR SQL2比較同一節點上的屬性

SELECT * FROM [nt:base] AS s WHERE s.[cq:title] <> s.[cq:summary] 

我得到的錯誤:

expected: static operand 

我看,我們不能在同一個節點下比較性能。我需要一個解決方法!

回答

0

我建議編寫一個遍歷所有頁面的小型servlet,並對JCR屬性級別進行比較。

使用遞歸梅索德這是相當容易acomplish,只是解決從那裏你要檢查並調用該方法的根源:

private void checkChildren(Page parent) { 
    Iterator<Page> children = parent.listChildren(); 
    while (children.hasNext()) { 
     Page child = children.next(); 
     ValueMap props = child.getProperties(); 
     String title = props.get("jcr:title", String.class); 
     String summary = props.get("jcr:summary", String.class); 
     if (title != null && summary!=null && !title.equals(summary)) { 
      //do something with it 
     } 
     checkChildren(child); 
    } 
}