2012-04-14 39 views
0

我们使用Apache兔崽子存储内容(HTML,图像,PDF文件)如下:JCR排序和分页根据名称,文件大小等

/folder1 (nt:unstructured) 
     /content1(nt:unstructured) 
      /file(nt:folder) 
       /test.html(nt:file) 
       /test.html-contents (nt:resource) 

在界面中,我们要显示的所有内容可以按名称,文件大小,文件类型等进行排序。为了达到这个目的,我尝试了XPath来检索内容节点。

  1. 是否可以对节点名进行排序?我尝试了一些东西一样

    “/件(*,NT:基地)为了通过@name升序”

,但不起作用。它适用于其他内容属性,但不适用于名称。 2.是否可以对文件大小进行排序?由于文件是内容的子节点,有没有办法根据文件大小查询内容? (通过jcr:data查询).length?)

作为解决方法,我通过节点迭代器检索所有内容并进行内存中排序/分页。我希望有更好的方法来做到这一点。

回答

0

据我所知,按名称排序不适用于JCR Xpath查询。但是,SQL支持。尽管这可能取决于Jackrabbit的版本。

使用SQL查询上面:

select * from nt:base order by jcr:name ASC 

排序上的资源的长度不支持为好。您可能需要考虑在节点上设置一个额外的属性以进行排序。处理上传到Jackrabbit时可以这样做。

根据节点在内存中排序的数量可能会变成一个大的burdon。

+0

我试过使用上面的SQL,但它不会按排序顺序返回节点。将订单更改为ASC DESC不起作用。 – sfbay 2012-05-08 21:46:24

+0

你正在使用哪种JCR实现和版本?你在使用JBoss Modeshape还是Apache Jackrabbit? – Jeroen 2012-05-09 15:36:44

+0

我正在使用Apache Jackrabbit。谢谢。 – sfbay 2012-05-10 00:18:40