0

我有这个 HQL,我需要一个子查询。我知道按顺序创建子查询是不合法的,但我不知道该怎么做

SELECT OBJECT(l) FROM InboundNotification l 
 INNER JOIN l.item item 
 WHERE l.job = ? ORDER BY (SELECT SUM(itemInst.qty) 
 FROM ItemInst itemInst 
  WHERE itemInst.receivedFromNotification_id = l.id) DESC, item.localId DESC

以上失败,因为我有子查询按顺序排列。我怎样才能重新配置它,这样它就可以工作了?

Java 代码中的排序在这里不是一个选项,即使它几乎同样有效。

4

1 回答 1

0

好的,我没有 hql 的概念,但我会假设它就像其他查询语言一样潜入这里,因为这个问题长期以来一直没有答案。

你能重写查询吗,它是这样的:

SELECT OBJECT(l), SUM(itemInst.qty) theSum
FROM InboundNotification l
INNER JOIN l.item item WHERE l.job = ?
INNER JOIN ItemInst on ItemInst.KEY = l.KEY
WHERE itemInst.receivedFromNotification_id = l.id)
GROUP BY OBJECT(l)
ORDER BY theSum

whereItemInst.KEY = l.KEY显示适合您情况的关系(如果存在这种关系)

于 2012-10-06T18:38:46.653 回答