2013-09-10 60 views
0

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

比方说,我有一个价格属于一个组的文章表。我们希望将它们全部添加,但我们只能为每组文章添加限制。实际上,该表格是非规范化的,因此我们已经在文章表中为该组设置了最大金额。

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 
) 

很显然,我的数据模型比较复杂,但是这是我的主要问题:

因此,作为SQL是那样简单。

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

谢谢大家。

回答

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(); 

我不敢去想休眠处理该嵌套查询与HQL。