2017-11-18 2 views
0

쿼리 결과로 그룹의 총 수를 얻지 못했습니다.QueryDSL Gruop By 행 수

JPAQuery jpaQuery = new JPAQuery(entityManager); 
jpaQuery.from(QMessageSend.messageSend) 
     .where(predicate) 
     .groupBy(QMessageSend.messageSend.messageId).count(); 

이것은 현재 코드입니다.
및이 코드는 각 그룹에 대해 반환 횟수를 계산합니다.

SELECT count(*) 
FROM MESSAGE_SEND ms 
GROUP BY ms.MESSAGE_ID 

그러나 쿼리 결과로 그룹의 총 수를 얻고 싶습니다. 어떻게해야합니까 SQL 아래

SELECT count(*) 
FROM (
    SELECT * 
    FROM MESSAGE_SEND ms 
    GROUP BY ms.MESSAGE_ID 
) msc 

의 같은 결과는?

MESSAGE_ID는 기본 키가 아닙니다. 및 JPAQuery의 고유 한 메소드가 특정 특정 열을 지원하지 않습니다. MESSAGE_ID이 테이블의 기본 키를 누른 다음 COUNT(*) 접미사입니다

SELECT COUNT(DISTINCT s.MESSAGE_ID) 
FROM MESSAGE_SEND ms; 

경우

답변

0

난 당신이 COUNT(DISTINCT)을 원한다고 생각 (어떤 매개 변수가 없습니다).

+0

MESSAGE_ID는 기본 키가 아닙니다. 및 JPAQuery 고유 메소드가 선택 열을 지원하지 않습니다. ( – chooco13

+0

@ chooco13 .... 내가 대답 한 후 JPA에 초점을 맞췄다.이 질문에 대한 답변이 있습니까? https://stackoverflow.com/questions/6197591/how-to-do-a-distinct-count-in- jpa-critera-api. –