【发布时间】:2021-03-12 06:55:24
【问题描述】:
在 MySQL 中,我可以使用以下条件求和查询来计算行数,按特定条件分组:
SELECT SUM(synced=true) AS sum_a, SUM(synced=false) AS sum_b from test_table where name = "xyz";
我正在尝试将其翻译成等效的CriteriaQuery,但是我无法这样做。 CriteriaQuery 等效项如何查找此内容?
到目前为止,我所达到的最接近的是使用带有selectCase 表达式的multiselect 函数,如下所示:
criteriaQuery.multiselect(
criteriaBuilder.sum(
criteriaBuilder.<Number>selectCase().when(/* conditions for sum_a */), 1
).otherwise(0)
).alias("sum_a"),
criteriaBuilder.sum(
criteriaBuilder.<Number>selectCase().when(/* conditions for sum_b */), 1
).otherwise(0)
).alias("sum_b"),
然而,上述方法与开头提到的 SQL 查询不同,即使它返回正确的值。
【问题讨论】:
标签: spring hibernate jpa hibernate-criteria