首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Hibernate 子查询有关问题

2014-01-09 
Hibernate 子查询问题本帖最后由 wj481199 于 2013-12-24 13:37:09 编辑现有需求一张表按某个字段分组查询

Hibernate 子查询问题
本帖最后由 wj481199 于 2013-12-24 13:37:09 编辑 现有需求一张表按某个字段分组查询, 而且要分页, 要得的分组后的记录总数来计算页数.
SQL可以这样写:


SELECT
SUM(a)
FROM
( SELECT
CASE
WHEN count(income_agent_id) IS NOT NULL THEN
1
ELSE
0
END AS a
FROM
deduct
WHERE
type <> 4
GROUP BY
income_agent_id,
MONTH (deduct_date)
) tmp;

而在hibernate中这样写报错了,不支持:

select sum(t.a) from (select d.income.id as a from Deduct d group by d.income.id) tmp t;


求大神们支招,有什么方法能实现像上面SQL的功能,不想直接SQL语句的方式(createSQLQuery),也不想用query.list().size()这样,小弟菜鸟,谢谢指教,分不多,有解决方案立马结贴.
[解决办法]
利用session打开数据库,然后建立自己定义一个find(id);方法,用一个Set<T>接收查询到的数据,这样所有数据都在里面了
[解决办法]
1.从你的意思看看记录总数是count()函数,不是sum函数
2.不论你按照什么分类,总记录数肯定是一样的啊,都是你所有的记录,单纯要记录数没必要这么麻烦的直接
   select count(d) from Deduct d就行了
3.如果从分页效果上来看的话,hql是不支持直接复核查询的,要在hbm配置文件中另外配置的,不过很麻烦,用的很少,可以建议
先select d.income.id as a from Deduct d order by d.income.id,如果是给出某个组别的名称就直接where加条件好了,然后用hibernate自带的分页语句,setFirstResult和setMaxResults来设定
,不知道能不能帮上你
[解决办法]
select sum(t.a) from (select d.income.id as a from Deduct d group by d.income.id) t;
tmp去掉

热点排行