使用HQL / Hibernate嵌套查询

时间:2013-09-10 21:33:24

标签: sql hibernate nested hql

对于我所读过的内容,在某些情况下,无法在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中重写,因为我猜我不允许将一个子查询嵌套到另一个子查询中。

谢谢大家。

1 个答案:

答案 0 :(得分: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处理嵌套查询。