J'ai 2 tables:Mise en veille prolongée DetachedCriteria dans la clause FROM
orders: id
items: id, orderId, total, flag
Je voudrais faire la requête suivante à l'aide des critères Hibernate (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
Je sais comment utiliser DetachedCriteri
un pour créer sous-requête dans la clause WHERE
, mais comme vous pouvez le voir, j'ai besoin de faire une sous-requête dans la clause FROM
. Si ce n'est pas possible, il est peut-être possible de l'écrire dans la clause SELECT
(à l'intérieur de SUM()
), car cette requête pourrait être réécrite dans un tel formulaire.
J'ai vraiment besoin d'utiliser l'API Criteria même si je dois passer un SQL natif à la requête.
Je ne vous ai pas montré les classes ou la cartographie, mais comme vous pouvez le voir, c'est un exemple très simple.
Vous ne nous montre pas les classes ou la cartographie, mais l'API de critères est exprimé en termes de modèle d'objet, pas SQL. – skaffman
Oui, je l'ai déjà dit. Cet exemple est si simple que je ne pense pas que les classes ou le mappage sont nécessaires ici, car mon problème ne peut peut-être pas être résolu à l'aide de l'API Criteria. – prostynick
Avez-vous essayé d'utiliser des projections pour cela? L'ajout de mapping et de classes aide toujours à vérifier un conseil avant de poster. – zoidbeck