我对getResultList()
有疑问。
执行时我的查询正常,返回700结果。
在返回列表中,我有700个结果,但列表包含重复数据。
所以我没有得到所有结果。
public List<EscaleCatalogueKaravel> obtenirListeEscaleKaravelSelonMarche(Integer refMarche, Integer refLangue) {
List<EscaleCatalogueKaravel> listeEscales = entityManager.createQuery("select distinct p from EscaleCatalogueKaravel p " +
"where p.refMarche=:refMarche and p.refLangue=:refLangue group by idEscale ")
.setParameter("refMarche", refMarche)
.setParameter("refLangue", refLangue)
.getResultList();
if (listeEscales == null || listeEscales.size() == 0) {
return null;
}
return listeEscales;
}
你有个主意吗?
答案 0 :(得分:1)
你正在使用MySQL,对吗? Oracle不会执行查询,而是抛出错误。
为了正确使用group by子句,您只能选择group by子句中也提到的行(或表达式)。如果选择不在group by子句中的行,则此行可能对一个组的成员具有不同的值。数据库应该返回哪些值? MySQL任意返回一个可能的值,但这是不正确的。
在您的查询中,您要么只执行select distinct idEscale from ...
,要么按所有必要的列进行分组,只选择那些列,或者删除group by
子句。顺便说一句,distinct也可以在没有group by的情况下使用,并且只有在必要时才应该使用distinct,因为它会使查询变慢。