select p.Id, sum(inc.Quantity)
from Products p join Incomes inc
group by p.Id
order by sum(inc.Quantity) >0
此查询在ORDER BY子句中提供NHibernate.Hql.Ast.ANTLR.QuerySyntaxException。我想知道是否有可能克服这个错误并通过某种表达式进行排序?
更新
我需要按名称,价格等对产品列表进行排序。但产品数量== 0必须到列表的底部(无论名称,价格如何)。此外,我需要执行该列表的分页。
答案 0 :(得分:1)
您还需要SQL支持的语法。这有效:
select p.Id, sum(inc.Quantity)
from Products p join p.Incomes inc
group by p.Id
order by case when sum(inc.Quantity) > 0 then 0 else 1 end
挑剔:为什么你的实体有多个名字?
答案 1 :(得分:0)
因为我已经完成了任何NHibernate,但是我希望你至少想要删除排序的> 0
位:
order by sum(inc.Quantity)
或者可能使用别名:
select p.Id, sum(inc.Quantity) totalQuantity
from Products p join Incomes inc
group by p.Id
order by totalQuantity
我不知道这是否有用,但值得一试:)
答案 2 :(得分:0)
尝试
select p.Id, sum(inc.Quantity)
from Products p join Incomes inc
group by p.Id
having sum(inc.Quantity) > 0
order by sum(inc.Quantity)
Order by用于排序。要过滤聚合字段,请使用。
请参阅http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-grouping