我正在尝试使用条件生成器将多个字段添加在一起,然后应用 sql 函数。 我尝试对其求和,并且只有两个字段,这是可能的,但是当我有第三个字段时,我无法轻松应用“+”。
select.add(cb.min(cb.sum(functionListToAdd.get(0), functionListToAdd.get(1))));
cq.multiselect(select);
em.createQuery(cq).getResultList();
这种情况有效,但我需要更多参数,并且 sum 函数不允许超过 2 个表达式(参数)。
您知道如何使用 CriteriaBuilder API 对下面的示例中的字段求和吗?
为了说明我想要什么,我做了一个请求 sql,它可以工作(我删除了一些代码以使其更具可读性)
我想要的 SQL 示例:
select
min(**b1_0.ecpi + s1_0.ecpi + l1_0.ecpi**),
max(b1_0.ecpi + s1_0.ecpi + l1_0.ecpi),
cast('units' as text)
from
facility.facility b1_0,
facility.cost s1_0 ,
facility.shipping l1_0
非常感谢帮助我,因为我因为一个简单的“+”而被锁定。
您始终可以尝试复合语句:
cb.sum(functionListToAdd.get(0), cb.sum(functionListToAdd.get(1), functionListToAdd.get(2)))