5

我使用一个可以操作 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用于您的搜索是一个选项,您可能想看看通过 java 查看 JCR repo 中的递归搜索

可能不是最有效的,所以请注意性能损失。

4

2 回答 2

4

您是否尝试在Jackrabbit 搜索配置中将属性“respectDocumentOrder”设置为 true ?

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

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

于 2013-06-11T10:54:24.020 回答
3

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

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

于 2013-06-07T16:03:16.607 回答