JackRabbit - 删除重复的行

时间:2011-03-04 14:34:17

标签: jackrabbit jcr

我在jackrabbit-users列表上问过这个问题,但我没有得到答案。

JCR-SQL2不提供SELECT DISTINCT(或类似的,AFAIK)。 JCR 1.0中的SQL或XPATH都没有...人们如何解决这个问题?删除重复行的最佳方法是什么?

我读到有人正在迭代结果并将它们放入Set中。在我的情况下,由于可能有大量的结果,这种方法可能最终成本太高。

这里有人有建议吗?

1 个答案:

答案 0 :(得分:2)

JCR 1.0(例如JSR-170)或JCR 2.0(例如JSR-283)中定义的查询语言都没有SELECT DISTINCT的概念。

执行此操作的唯一方法是手动处理结果并丢弃您已经看过的任何行(或节点)。使用一组路径或Node对象可行。这不是太难,但不幸的是它应该比它应该更难,并且如你所提到的,如果存在大量行和/或重复,则可能会很昂贵。

这就是为ModeShape提供对JCR-SQL2查询的完全支持,但也允许使用SELECT DISTINCT的原因。实际上,ModeShape支持许多其他功能,例如

  • WHERE子句中的非相关子查询
  • LIMIT nOFFSET m
  • UNIONINTERSECTEXCEPT
  • FULL OUTER JOINCROSS JOIN
  • BETWEEN条件
  • 使用INNOT IN
  • 设置条件
  • DEPTHPATH动态操作数

和其他一些人。有关详细信息,请参阅documentation