JCR SQL2 - 在JCR浏览器中的结果查询顺序

时间:2013-06-07 08:54:55

标签: sorting jcr jcr-sql2

我使用的是一个可以操作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

可能不是效率最高的,所以请注意性能影响。

2 个答案:

答案 0 :(得分:4)

您是否尝试在Jackrabbit Search Configuration中将属性“respectDocumentOrder”设置为true?

  

如果为true且查询不包含“order by”子句,则结果节点将按文档顺序排列。为了在查询返回大量节点设置为“false”时获得更好的性能(在1.5中'false'现在是默认值)。

只有在需要时才应将其设置为true,因为查询结果将在Java中完全迭代,以便对它们进行排序。

答案 1 :(得分:2)

指定查询结果顺序的唯一方法是在查询中使用ORDER BY子句。如果不这样做,实现可以按照自己想要的顺序自由返回节点。

但是我知道在JCR-SQL2中没有办法指定父节点下子节点的“自然顺序”(我的术语)。