2017-11-18 10 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 

ただし、クエリ結果でグループの合計数を取得する必要があります。 以下のような結果が得られました

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。 –