2011-03-04 82 views
2

我在jackrabbit-users列表上提出了這個問題,但是我沒有得到答案。JackRabbit - 刪除重複行

JCR-SQL2不提供SELECT DISTINCT(或類似的AFAIK)。 JCR 1.0中的SQL或XPATH都不行...人們如何解決這個問題?刪除重複行的最佳方法是什麼?

我看到有人在迭代結果並將它們放入Set中。就我而言,由於可能有大量的結果,這種方法可能最終成本太高。

有沒有人在這裏有一個建議?

回答

2

在JCR 1.0(例如JSR-170)或JCR 2.0(例如JSR-283)中定義的查詢語言都不具有SELECT DISTINCT的概念。

要做到這一點的唯一方法是手動處理結果並拋出您已經看到的任何行(或節點)。使用一組路徑或節點對象將起作用。這並不困難,但不幸的是它比應該更難,正如你所提到的,如果有很多行和/或重複的話,它可能會很昂貴。

這就是爲什麼ModeShape提供對JCR-SQL2查詢的完全支持,但也允許使用SELECT DISTINCT。事實上,振型支持許多其它特徵,諸如

  • WHERE子句中的非相關子
  • LIMIT nOFFSET m
  • UNIONINTERSECTEXCEPT
  • FULL OUTER JOINCROSS JOIN
  • BETWEEN標準
  • 設置標準,我們荷蘭國際集團INNOT IN
  • DEPTHPATH動態操作數

和其他幾個人。有關詳細信息,請參閱documentation

+0

非常感謝Randall,我知道Modeshape已經實現了DISTINCT,後來我實際上正在考慮詢問關於Modeshape的一些事情。我正在考慮遷移到Modeshape的可能性,但是有一個功能在我正在使用的JackRabbit中,我不知道Modeshape是否有,http://wiki.apache.org/jackrabbit/ExcerptProvider – Miguel 2011-03-04 17:56:11

+0

Miguel。你是對的 - ModeShape還沒有這個功能。在我們的論壇上諮詢! – 2011-03-04 18:26:29