I以下のJPQLクエリ持っている - それは、基本的には、このような階層(ツリー)で編成されたファイルのmd5sを返しJPA/JPQLのCOUNT質問
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はもっとして1つのリーフに表示されている場合階層の特定の枝では、一度しか表示されません(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を返します。私が望んでいたのは、元のクエリが返す行の合計数を100とすると、1行戻すということでした。私は何かが明らかに欠けているように感じる。
提案? @ doc_180として
Hmmm .. getResultListの代わりにquery.getSingleResultを実行して、結果を数値にキャストしましたか? –
提案:コードブロック内にコード(またはこの場合はクエリ)を配置してください。 (コードを強調表示して、Macユーザーの場合はctrl + kまたは^ kを押してください) –