getResultList()
에 문제가 있습니다. 쿼리가 실행되면 700 번 결과가 반환됩니다. 반환 목록에서 700 개의 결과가 있지만 목록에 중복 데이터가 포함되어 있습니다. 그래서 모든 결과가 없습니다.getresultlist - 목록에는 ok이지만 데이터가 중복됩니다.
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;
}
아이디어가 있습니까?
귀하의 질의는별로 의미가 없으며, 심지어 실행되는 것에 놀랐습니다. group by는 select 절 (집계, 합계, 평균 등)에 집계 함수가있을 때 사용합니다. 그룹을 삭제 해보십시오. 또한 빈 콜렉션 대신 null을 반환하는 것은 나쁜 습관입니다. getResultList()가 null을 반환하지 않기 때문에 호출자가 null을 확인하도록합니다. –
@JB Nizet : Javadoc에서 가능한 반환 값으로 언급되면 null을 반환하는 것이 절대적으로 좋습니다. 빈리스트의 불필요한 생성을 피할 수있다. (쿼리가 실행되기 전에 에러 조건이 검출된다면 -이 예제에서는 그렇지 않다 - 여기서 null은 실제로 불필요하다). – Johanna
@Johanna. 이 경우 Collections.emptyList()를 반환하십시오. 불변의 빈리스트를 돌려 주어, 불필요한 오브젝트는 생성되지 않습니다. –