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 句に含まれていない行を選択すると、この行は 1 つのグループのメンバーに対して異なる値を持つ可能性があります。データベースが返す値は次のうちどれですか? MySQL は可能な値の 1 つを任意に返しますが、それは正しくありません。

クエリでは、select distinct idEscale from ...必要なすべての列でグループ化するか、その列のみを選択するか、group by句を削除します。ちなみに、distinct は group by なしで使用することもできます。また、クエリが遅くなるため、distinct は本当に必要な場合にのみ使用する必要があります。

于 2012-05-29T07:43:47.003 に答える