JCR SQL2查询与动态日期比较

nik*_*000 4 jackrabbit jcr

我需要查询jcr存储库以查找日期属性(例如jcr:created)比特定日期更年轻的节点.

使用SQL2,我像这样检查"jcr:created> date"(工作正常):

SELECT * FROM [nt:base] AS s WHERE s.[jcr:created] > CAST('2012-01-05T00:00:00.000Z' AS DATE)

现在棘手的部分:

还有一个额外的属性声明需要动态添加到jcr:created日期的天数.

假设该属性包含5(天),那么查询不应该检查"jcr:created> date"而是"(jcr:created + 5)> date".包含属性值10的下一个节点应通过"(jcr:created + 10)> date"进行检查.

是否有任何智能/动态操作数可以做到这一点?由于属性是特定于节点的,因此我无法将其静态添加到查询中,但必须读取每个节点的属性.

Juk*_*ing 6

Jackrabbit目前不支持这种动态约束.

我认为现在最好的解决方案是使用固定日期约束运行查询,然后自己显式过滤结果.

另一种解决方案是预先计算"jcr:created + extratime"值并将其存储在附加属性中.这样的计算可以位于首先创建/更新节点的代码中,也可以将它放在观察监听器中,这样无论节点如何被修改,它都会被触发.