小编use*_*233的帖子

CriteriaBuilder - 使用SelectCase求和

我正在尝试执行如下所示的求和SQL查询:

select group_ID, sum(case when user_type = 'Exec' then 1000  
                          when user_type = 'Office' then 10 else 0 end)  
from subscription  
group by group_ID;  
Run Code Online (Sandbox Code Playgroud)

使用来自Hiberate CriteriaBuilder查询的以下代码段:

criteriaBuilder.sum(
  criteriaBuilder.selectCase()  
     .when(criteriaBuilder.equal(subscriptionJoin.get(Subscription_.userType), "Exec"),1000)  
     .when(criteriaBuilder.equal(subscriptionJoin.get(Subscription_.userType), "Office"),1)  
     .otherwise(101))  
Run Code Online (Sandbox Code Playgroud)

但是出现以下编译错误:

类型参数'N'的推断类型'java.lang.object'不在其范围内; 应该扩展'java.lang.number'

知道如何使用selectCase支持执行求和吗?

criteria-api

6
推荐指数
1
解决办法
7571
查看次数

标签 统计

criteria-api ×1