将 SQL 查询转换为 JPQL 查询 - 具有特定文本值的属性的总和
Convert SQL query to JPQL query - sum number of attributes with a specific text value
我的SQL查询是
SELECT cust.*, sum(ord.status="Pending") as pendingOrderCount, sum(ord.status="Completed") as completedOrderCount
FROM customer cust
LEFT JOIN item_order ord ON ord.customer_id = cust.id
WHERE cust.tenant_id = 1
GROUP BY cust.id
此查询适用于 MySql Workbench
所以本质上我想获取客户的所有属性,然后再添加两个别名,已完成订单的数量是该客户的订单数量,其中 order.status 是“完成”,每个客户的待处理订单
在我的 Spring Boot JPA 存储库 class 中,我正在尝试使用 JPQL 重新创建此查询。这是我的尝试:
@Query("select cust, sum(ord.status = 'Completed') as completedOrders, sum(ord.status = 'Pending') as pendingOrders from item_order ord LEFT JOIN ord.customer where customer id = 1)
我知道这是不正确的,我的 IDE 显示语法错误
ord.status = 'Completed'
和
ord.status = 'Pending'
在等号处。我一直在查看 JPQL 文档,但没有找到任何获得具有给定值的属性总和的示例,因此请使用一些帮助
我发现了如何根据属性在 JPQL 中的状态有条件地计算属性的数量
sum(case when ord.status = 'Completed' then 1 else 0 end) as completedOrders, sum(case when ord.status = 'Pending' then 1 else 0 end) as pendingOrders
我的SQL查询是
SELECT cust.*, sum(ord.status="Pending") as pendingOrderCount, sum(ord.status="Completed") as completedOrderCount
FROM customer cust
LEFT JOIN item_order ord ON ord.customer_id = cust.id
WHERE cust.tenant_id = 1
GROUP BY cust.id
此查询适用于 MySql Workbench
所以本质上我想获取客户的所有属性,然后再添加两个别名,已完成订单的数量是该客户的订单数量,其中 order.status 是“完成”,每个客户的待处理订单
在我的 Spring Boot JPA 存储库 class 中,我正在尝试使用 JPQL 重新创建此查询。这是我的尝试:
@Query("select cust, sum(ord.status = 'Completed') as completedOrders, sum(ord.status = 'Pending') as pendingOrders from item_order ord LEFT JOIN ord.customer where customer id = 1)
我知道这是不正确的,我的 IDE 显示语法错误 ord.status = 'Completed' 和 ord.status = 'Pending'
在等号处。我一直在查看 JPQL 文档,但没有找到任何获得具有给定值的属性总和的示例,因此请使用一些帮助
我发现了如何根据属性在 JPQL 中的状态有条件地计算属性的数量
sum(case when ord.status = 'Completed' then 1 else 0 end) as completedOrders, sum(case when ord.status = 'Pending' then 1 else 0 end) as pendingOrders