我遇到问题getResultList()
。 我的查询在执行时是OK的,并返回700个结果。 在返回列表中,我有700个结果,但列表包含重复数据。 所以我没有全部结果。getresultlist - 查询正常但列表中的数据重复
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;
}
你有想法吗?
您的查询没有太大意义,我很惊讶它甚至运行。当你在select子句中有一个聚合函数(count,sum,avg等)时,按服务分组。尝试删除该群组。而且,返回null而不是空集合是不好的做法。它强制调用者检查null(因为你在这里做,这是不必要的,因为getResultList()永远不会返回null) –
@JB Nizet:如果在Javadoc中提到返回值是可能的,返回null是绝对可以的,因为它可以避免多余的空列表创建(如果在执行查询之前检测到错误条件 - 在本例中不是这种情况 - 这里返回null实际上是多余的)。 – Johanna
@Johanna。在这种情况下,返回Collections.emptyList()。您将返回一个不可变的空列表,并且不会创建多余的对象。 –