我正在尝试通过以下查询查询给定节点类型的子树:
SELECT * FROM [my:Type] AS my WHERE PATH(my) LIKE '/content/subtree/%'
不知怎的,它没有给出任何结果 - 使用 IDESCENDANTNODE 有效 - 但一旦我总共有 >5k 个元素,查询性能就会很糟糕 - 无论是在我的子树内部还是外部。
最佳答案
我认为 PATH(my)
无效 JCR SQL或JCR 2.0 SQL-2语法。您应该使用 SQL-2:
select * from [my:Type] where isdescendantnode('/content/subtree')
或 XPath
/jcr:root/content//element(*, my:Type)
这可能会很慢,因为它只会使用节点类型上的索引(路径没有索引)。如果您需要更快,您可以(例如)将路径存储为属性,然后添加相应的条件;然而,这将阻止快速移动操作。
关于java - JCR按路径查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763989/