我有以下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
Run Code Online (Sandbox Code Playgroud)
它基本上返回组织在层次结构(树)中的文件的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
Run Code Online (Sandbox Code Playgroud)
但是,这会返回100行,每行包含一个long,表示md5出现在分支中的次数.我想要的只是获得1行,其中长值为100,即原始查询返回的总行数.我觉得我错过了一些明显的东西.
建议?
正如@ doc_180所评论的那样.使用getSingleResult()将产生计数
使用以下代码获取结果.
// Assuming that the Query is strQ
Query q = entityManager.createQuery( strQ );
int count = ( (Integer) q.getSingleResult() ).intValue();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16135 次 |
| 最近记录: |