【发布时间】:2014-08-14 20:34:11
【问题描述】:
我的表/实体如下所示:
*ID* | *Description* | *Error* | *batchId*
1 | test 111 | 0 | 456
2 | test 222 | 1 | 456
3 | test 333 | 0 | 456
4 | test xxx | 1 | 458
5 | test yyy | 1 | 458
我正在尝试以这种形式选择结果:
batchId | HowManyOK | HowManyErrors
456 | 2 | 1
458 | 0 | 2
在 JPQL 中,我尝试过:
SELECT
g,
SUM( CASE WHEN g.error = false THEN 1 ELSE 0 END ) AS ok,
SUM( CASE WHEN g.error = false THEN 1 ELSE 0 END ) AS ko
FROM
GoogleMerchantLog g
GROUP BY g.batchId
但它不能编译!它声称错误“封装的表达式不是有效的表达式。”在总和。
也许有一些建议可以使用 Criteria API 解决它?
没有解决办法? 我终于解决了映射本机查询:((
【问题讨论】:
-
如何尝试只使用
CASE WHEN...而不使用SUM()方法并确保使用JPA 2.x版本。 -
但是...通过删除 SUM(),我不会得到组的总和,我只会得到 1 或 0?
-
@FabioB。你解决了吗
-
不幸的是......不!我想,我走了另一条路。记不太清了,抱歉。
标签: jpa jpql criteria-api case-when