JackRabbit - удаление дублирующих строк - PullRequest
2 голосов
/ 04 марта 2011

Я задавал этот вопрос в списке пользователей jackrabbit, но я не получил ответа.

JCR-SQL2 не предоставляет SELECT DISTINCT (или аналогичный AFAIK).Как и SQL или XPATH в JCR 1.0 ... Как люди справляются с этим?Каков наилучший способ удаления повторяющихся строк?

Я читал, что кто-то просматривал результаты и помещал их в набор.В моем случае из-за возможного огромного количества результатов такой подход может оказаться слишком дорогостоящим.

У кого-нибудь здесь есть предложение?

1 Ответ

2 голосов
/ 04 марта 2011

Ни один из языков запросов, определенных в JCR 1.0 (например, JSR-170) или JCR 2.0 (например, JSR-283), не имеет понятия SELECT DISTINCT.

Единственный способ сделать этообрабатывать результаты вручную и выбрасывать любые строки (или узлы), которые вы уже видели.Использование набора путей или объектов Node будет работать.Это не так уж сложно, но, к сожалению, сложнее, чем должно быть, и, как вы упоминаете, может быть дорогим, если есть много строк и / или дубликатов.

Вот почему ModeShape обеспечивает полную поддержку запросов JCR-SQL2, но также позволяет использовать SELECT DISTINCT.Фактически, ModeShape поддерживает ряд других функций, таких как

  • некоррелированные подзапросы в предложении WHERE
  • LIMIT n и OFFSET m
  • UNION, INTERSECT и EXCEPT
  • FULL OUTER JOIN и CROSS JOIN
  • BETWEEN критерий
  • набор критериев с использованием IN и NOT IN
  • DEPTH и PATH динамические операнды

и некоторые другие.Подробнее см. Документацию .

.
...