我使用的是一个可以操作JCR节点的应用程序,通常你会重命名,删除,删除或移动它们。
使用JCR API,我可以访问我的存储库中的节点,并以与它们在JCR中相同的顺序返回一组节点。
我希望能够使用JCR SQL2查询来做同样的事情。我还没有发现任何有关此事的信息。现在开始相信这是不可能的。
例如,如果我有一个JCR树,例如:
parentNode
|_childNode1
|_childNode2
|_childNode3
|_childNode4
使用JCR SQL2查询时,它将以不同于以下的顺序返回它们:childNode1,childNode2,childNode3,childNode4
我查看其他文档: http://docs.jboss.org/jbossdna/0.7/manuals/reference/html/jcr-query-and-search.html#jcr-sql2-query-language http://www.day.com/specs/jcr/2.0/6_Query.html
提前致谢
编辑:如果您选择使用Java
作为选项,则可能需要查看Recursive search in JCR repo via java
可能不是效率最高的,所以请注意性能影响。
答案 0 :(得分:4)
您是否尝试在Jackrabbit Search Configuration中将属性“respectDocumentOrder”设置为true?
如果为true且查询不包含“order by”子句,则结果节点将按文档顺序排列。为了在查询返回大量节点设置为“false”时获得更好的性能(在1.5中'false'现在是默认值)。
只有在需要时才应将其设置为true,因为查询结果将在Java中完全迭代,以便对它们进行排序。
答案 1 :(得分:2)
指定查询结果顺序的唯一方法是在查询中使用ORDER BY
子句。如果不这样做,实现可以按照自己想要的顺序自由返回节点。
但是我知道在JCR-SQL2中没有办法指定父节点下子节点的“自然顺序”(我的术语)。