gpt4 book ai didi

criteria-api - CriteriaBuilder - 使用 SelectCase 求和

转载 作者:行者123 更新时间:2023-12-04 13:42:04 27 4
gpt4 key购买 nike

我正在尝试执行如下的汇总 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;

使用来自 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))

但是出现以下编译错误:

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

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

最佳答案

总和定义如下:

<N extends Number> Expression<N> sum(Expression<N> x);

所以编译错误的原因是 sum 方法需要这样的参数,即类型扩展为 Number 的 Expression。它根据 selectCase 确定类型并以 java.lang.Object 结束,这是 Not Acceptable 。

问题可以通过提供类型参数( <Number> )来解决:
criteriaBuilder.sum(
criteriaBuilder.<Number>selectCase()

关于criteria-api - CriteriaBuilder - 使用 SelectCase 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462330/

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