私は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
を使用してサブクエリin句を作成する方法を知ってWHERE
いますが、ご覧のとおり、サブクエリin句を実行する必要がありますFROM
。それが不可能な場合は、このクエリをそのような形式に書き換えることができるため、SELECT
(内部の)句に書き込む方法があるかもしれません。SUM()
ネイティブSQLをクエリに渡す必要がある場合でも、CriteriaAPIを使用する必要があります。
クラスやマッピングは示しませんでしたが、ご覧のとおり、これは非常に単純な例です。