2010-02-12 65 views
1

我有一个表包含一些重复(定义为一些特定的列包含相同的值)。让所有这些人回升的最佳方式是什么?我需要所有的duplictes,所以组由结合有计数()> 1 *不是我想去的方式。Hibernate/HQL - 如何获取数据库返回的所有重复项?

所以,如果我的表包含以下数据

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 

非常感谢您的帮助!

斯特凡

+0

你有没有尝试子选择?它工作? – Bozho 2010-02-15 14:03:07

回答

1
  1. 取的List
  2. 所有(SELECT * FROM ..)创建一个新的HashBag,传递构造函数列表
  3. 只得到项目,其中getCount()超过1

如果您已将一个对象映射到表,其equals()方法返回true如果所有的属性都相同。


另一种方法是使用subselect。子查询是您的GROUP BY + COUNT()查询,而外部查询与子查询的结果进行比较。

+0

感谢格式化我的问题 - 当然,感谢您的回答:)当然,我可以用Java做到这一点,但我只想从数据库中获取重复项... – swalkner 2010-02-12 09:37:56

+0

为什么?不是最终结果的重要,而不是手段。 – Bozho 2010-02-12 09:41:32

+0

是的 - 但它是一个非常大的表,所以它不会有所有的数据在内存中。 – swalkner 2010-02-12 09:43:33