吊索:订购儿童资源的最佳方式

时间:2017-02-02 22:52:25

标签: jcr sling

情况

您在Java类中,在Sling环境中运行。您有一个Resource实例。它有大约400名儿童。你想得到100最近的日期属性" myDate。"

要求

您必须拥有实际的资源对象才能进行操作 - 而不是节点对象

偏好

您将首选不写比较器并比较应用程序服务器堆内存中的所有400个对象。

你会如何解决这个问题?

你可以做一个SQL 2查询......但为了满足在Resource对象上运行的要求,这似乎需要付出很多努力和处理。

  • 获取QueryManager实例
  • 创建并执行查询
  • 通过使用ResourceResolver.resolve(node.getPath())解析每个节点,将结果中的节点转换回资源

Oof看起来很粗糙。

你可以使用resource.listChildren()将所有资源放入堆内存中,然后使用Java Collections API和比较器对它们进行排序......但是现在你要在应用服务器内存中处理所有这些数据了还必须编写自己的排序逻辑。这违反了开头所说的偏好。

有谁知道任何花哨的解决方案?

如果SQL 2查询有办法返回Resource对象而不是Nodes,那就太好了。或者,如果有一种方法可以在Resource的listChildren()方法中指定条件或排序指令,那就太好了。人们在此期间做了什么?

0 个答案:

没有答案