【发布时间】:2012-10-21 14:03:51
【问题描述】:
我搜索了整个论坛;几乎每个答案都涉及到这一点,但没有帮助。 我的 DAO 中有以下查询,但它不起作用,我不明白为什么?
这是我的完整方法:
public List<RwTac> findAll(){
String sql = "select distinct v from RwTac v " +
"order by v.vendor" ;
Query query = sessionFactory.getCurrentSession().createQuery(sql);
return query.list();
}
谢谢。
【问题讨论】:
-
RwTac 表中是否有名为 v 的列?
-
没有;查询正常工作,并在这里给我带来称为“v”的供应商,但它们不是唯一的......
-
您是否在您的实体中实现了
equals和hashCode? -
重命名别名没有帮助。 @SJuan76 不,我没有帮助吗?
-
DISTINCT将通过以下两种方式之一为您提供独特的结果:通过在 SQL 中执行DISTINCT或通过检查结果并删除重复项。我不确定hibernate是如何做到的,但我认为这不是第一种方式,从那时起你就不会遇到这个麻烦了。如果是第二个,那么您需要equals()和hashCode()以便 Hibernate 可以确定哪些是重复项。