Hibernate / HQL - как вернуть все дубликаты из базы данных? - PullRequest
1 голос
/ 12 февраля 2010

У меня есть таблица, содержащая несколько дубликатов (определенные как определенные столбцы, содержащие одинаковые значения). Какой лучший способ вернуть все эти розы? Мне нужны все дубликаты, поэтому сгруппировать по в комбинации с с количеством ()> 1 * - не то, что я люблю идти.

Так что, если моя таблица содержит следующие данные

1 - foo - bar - something
2 - foo - bar - another thing
3 - foo - bar - something
4 - foo - bar - something else

Я бы хотел вернуться:

1 - foo - bar - something
3 - foo - bar - something

Большое спасибо за помощь!

Stefan

1 Ответ

1 голос
/ 12 февраля 2010
  1. Получить все элементы (SELECT * FROM ..) в List
  2. Создать новый HashBag, передав список в конструкторе
  3. получить только те предметы, где getCount() больше 1.

Это будет работать, если вы сопоставили объект с таблицей, метод equals() которого возвращает true, если все свойства одинаковы.


Другим способом является использование подвыбора . Подвыбор - это ваш запрос GROUP BY + COUNT (), а внешний запрос сравнивается с результатами подзапроса.

...