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