hql语句如下
select sum(s.article) as 文章,c.name as 班级 from student s join student.classes c group by c.id
这样会将每个班级的文章数量合列出来.
文章 班级
10 c1
20 c2
30 c3
现在我想要的是文章数量的总和,即想求得10+20+30=60这个总数.
如果是sql的话倒可以用子查询解决,但是hql不能
请问这个hql应该怎么样改.
感觉这种需求很普遍,hql应该能支持.
select sum(s.article) as 文章,c.name as 班级 from student s join student.classes c group by c.id
这样会将每个班级的文章数量合列出来.
文章 班级
10 c1
20 c2
30 c3
现在我想要的是文章数量的总和,即想求得10+20+30=60这个总数.
如果是sql的话倒可以用子查询解决,但是hql不能
请问这个hql应该怎么样改.
感觉这种需求很普遍,hql应该能支持.
你倒是可以在DAO上想想办法。
比如,定义一个getSum的方法,在此方法中根据三个属性值求和,再返回。
因为每行是按照学生来列的,此时sum(s.article)会出现一个班级计算多次的情况
这是报表里的一个需求,报表分页显示,每一列有一个总计值.
现在的数据量挺大的,如果一次取出这么多数据放入一个List再遍历求和,页面加载时间太长了
select sum(art) as 文章 from (select sum(s.article) art,c.name name from student s join student.classes c group by c.id) 自定义表名
没其他办法了吗
主要是查询条件已经用HQL写好公共的了.
吸取教训了,报表之类复杂的需求还是不要用hql比较好
你想一句SQL搞出来,那好像真是不太可能。
报表中那些复杂的 SQL 语句,HQL 根本就没有这种能力做到。