我有 2 张桌子:
orders: id
items: id, orderId, total, flag
我想使用 Hibernate Criteria (DetachedCriteria) 进行以下查询:
SELECT
o.id,
SUM(i1.total),
SUM(i2.total)
FROM
orders o
LEFT JOIN
(
SELECT
i.orderId as orderId,
SUM(i.total) as total
FROM
items i
WHERE
i.flag = 0
GROUP BY
orderId
) AS i1
ON i1.orderId = o.id
LEFT JOIN
(
SELECT
i.orderId as orderId,
SUM(i.total) as total
FROM
items i
WHERE
i.flag = 1
GROUP BY
orderId
) AS i2
ON i2.orderId = o.id
GROUP BY
o.id
我知道如何使用DetachedCriteri
a 在WHERE
子句中创建子查询,但是如您所见,我需要在子句中创建子查询FROM
。如果不可能,也许有办法将它写在SELECT
子句(内部SUM()
)中,因为这个查询可以重写为这种形式。
即使我必须将本机 SQL 传递给查询,我也确实需要使用 Criteria API。
我没有向您展示类或映射,但正如您所见,这是一个非常简单的示例。