2017-11-18 3 views
0

Ich bin fest in der Gesamtzahl der Gruppe von Abfrage Ergebnis erhalten.QueryDSL Gruop nach Zeilenanzahl

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

Dies ist mein aktueller Code.
und diese Code-Return-Anzahl für jede Gruppe.

aber ich möchte die Gesamtzahl der Gruppe nach Abfrage Ergebnis erhalten. wie Ergebnis von unter SQL

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

Was soll ich tun?

MESSAGE_ID ist kein Primärschlüssel. und die eindeutige Methode von JPAQuery unterstützen keine Auswahl einer bestimmten Spalte. (Hat keine Parameter)

Antwort

0

Ich glaube, Sie COUNT(DISTINCT) wollen:

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

Wenn MESSAGE_ID der Primärschlüssel in der Tabelle ist, dann COUNT(*) genügt.

+0

MESSAGE_ID ist kein Primärschlüssel. und JPAQuery distinct-Methode, die Select-Spalte nicht unterstützt. ; ( – chooco13

+0

@ chocoo13... Ich bemerkte den Fokus auf JPA, nachdem ich geantwortet hatte. Beantwortet das die Frage? Https://stackoverflow.com/questions/6197591/how-to-do-a-distinct-count-in- jpa-critera-api. –