У меня следующий запрос JPQL -
SELECT f.md5
FROM File f, Collection leafCollections, Collection instCollections
WHERE (f.status = com.foo.bar.FileStatus.Happy OR f.status = com.foo.bar.FileStatus.Sad)
AND f.collectionId = leafCollections.collectionId
AND leafCollections.instanceCollectionId = instCollections.collectionId
GROUP BY f.md5, instCollections.collectionId
Он в основном возвращает md5 для файлов, которые организованы в иерархию (дерево), так что если один и тот же MD5 появляется в более чем одном листе в определенной ветви иерархии, он будет показан только один раз (благодаря GROUP BY ).
Это отлично работает. Допустим, я вернул 100 строк. Каждая строка, содержащая md5 в качестве строки.
Теперь я хочу получить COUNT возвращенных строк. Я думал, что мог бы просто сделать:
SELECT COUNT(f.md5)
FROM File f, Collection leafCollections, Collection instCollections
WHERE (f.status = com.foo.bar.FileStatus.Happy OR f.status = com.foo.bar.FileStatus.Sad)
AND f.collectionId = leafCollections.collectionId
AND leafCollections.instanceCollectionId = instCollections.collectionId
GROUP BY f.md5, instCollections.collectionId
Однако это возвращает 100 строк, каждая из которых содержит long, представляющий количество раз, когда md5 появлялся в ветке. Я хотел просто получить обратно 1 строку с длинным значением 100, равным общему количеству строк, возвращенных исходным запросом. Я чувствую, что упускаю что-то очевидное.
Предложения?