0

我有一个问题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;

}

你有想法吗?

4

1 回答 1

1

你用的是 MySQL,对吧?Oracle 不会执行查询,而是抛出错误。

为了正确使用 group by 子句,您只能选择 group by 子句中也提到的行(或表达式)。如果您选择的行不在 group by 子句中,则该行对于一个组的成员可能具有不同的值。数据库应该返回哪些值?MySQL 任意返回一个可能的值,但这是不正确的。

在您的查询中,您要么只做,要么select distinct idEscale from ...按所有必要的列分组,只选择那些列,或者删除您的group by子句。顺便说一句,distinct 也可以在没有 group by 的情况下使用,并且仅在确实需要时才应使用 distinct,因为它会使查询变慢。

于 2012-05-29T07:43:47.003 回答