如何使用 JPA 使用 CriteriaBuilder 在字段之间进行加法(“+”)?

问题描述 投票:0回答:1

我正在尝试使用条件生成器将多个字段添加在一起,然后应用 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

非常感谢帮助我,因为我因为一个简单的“+”而被锁定。

java jpa criteriabuilder
1个回答
0
投票

您始终可以尝试复合语句:

cb.sum(functionListToAdd.get(0), cb.sum(functionListToAdd.get(1), functionListToAdd.get(2)))
© www.soinside.com 2019 - 2024. All rights reserved.