gpt4 book ai didi

count - JPA/JPQL COUNT 问题

转载 作者:行者123 更新时间:2023-12-01 11:06:50 24 4
gpt4 key购买 nike

我有以下 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 行,每一行都包含一个长整数,表示 md5 在分支中出现的次数。我想要的只是返回 1 行,其中 long 值 100 是原始查询返回的总行数。我觉得我错过了一些明显的东西。

建议?

最佳答案

正如@doc_180 评论的那样。使用 getSingleResult() 将产生计数

使用以下代码获取结果。

// Assuming that the Query is strQ
Query q = entityManager.createQuery( strQ );
int count = ( (Integer) q.getSingleResult() ).intValue();

关于count - JPA/JPQL COUNT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com