JCR SQL2比较同一节点上的属性

时间:2014-08-30 02:26:37

标签: cq5 jcr jcr-sql2

我们有一些节点属性不正确,其中cq:title不等于cq:summary(我们希望它们始终相等)。为了找到它们,我输入:

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

我收到错误:

expected: static operand

我读到我们无法比较同一节点下的属性。我需要一个解决方法!

1 个答案:

答案 0 :(得分:0)

我建议编写一个小的servlet,遍历所有页面并对JCR属性级别进行比较。

使用递归方法很容易实现,只需要从你想检查的地方解析根并调用方法:

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);
    }
}