0

对于我所阅读的内容,在某些情况下,无法在 HQL / Hibernate 中嵌套子查询。

假设我有一个带有价格的文章表,属于一个组。我们想将它们全部添加,但每组文章最多只能添加一个限制。实际上,该表是非规范化的,因此我们在文章表中已经有了该组的最大数量。

所以 SQL 将很简单:

SELECT SUM(case when max_amount is null then price
when price<max_amount then price
else max_amount end)
FROM
(SELECT
SUM(price) as price, group_id, max_amount
FROM articles
GROUP BY group_id, max_amount
)

显然,我的数据模型更复杂,但这是我的主要问题。

我想知道如何在 HQL 中重写它,因为我想我不允许将一个子查询嵌套到另一个子查询中。

谢谢大家。

4

1 回答 1

0

我不愿意以这种方式这样做,但经过一些研究,我只能考虑按原样使用 SQL 查询。

就像是 :

String sQuery = "SELECT SUM(case when max_amount is null then price ...
final org.hibernate.SQLQuery query = session.createSQLQuery(sQuery);
List results = query.list();

我想不出 Hibernate 用 HQL 处理嵌套查询。

于 2013-10-10T11:08:07.947 回答