Hibernate如何查询/显示count()的值 20
数据库里2个表。我要统计出2个表的数据。SQL语句如下selectclry,count(clry)fromRcwhBgroupbyclrygoselectclry,cou...
数据库里2个表。我要统计出2个表的数据。SQL语句如下
select clry,count(clry) from RcwhB group by clry
go
select clry,count(clry) from DmtwhB group by clry
--------------------------------------------------
查询结果为:
张三 5
李四 2
王五 9
----------------------
张三 6
李四 3
周六 9
如何将2句SQL语句合并为一句?用HQL该怎么写?
Servlet中
request.setAttribute("rcwh_Load_All_Count", list);之后
页面如何显示出count(clry)的值
(clry我知道怎么显示,就不用说了,问题是count(clry)的值在表中没有字段与其对应。该怎么显示出来。)
请看清楚提问,最好能给出合并之后的HQL和页面显示的代码。
如果能解决。将追加5倍的分数作为酬谢 展开
select clry,count(clry) from RcwhB group by clry
go
select clry,count(clry) from DmtwhB group by clry
--------------------------------------------------
查询结果为:
张三 5
李四 2
王五 9
----------------------
张三 6
李四 3
周六 9
如何将2句SQL语句合并为一句?用HQL该怎么写?
Servlet中
request.setAttribute("rcwh_Load_All_Count", list);之后
页面如何显示出count(clry)的值
(clry我知道怎么显示,就不用说了,问题是count(clry)的值在表中没有字段与其对应。该怎么显示出来。)
请看清楚提问,最好能给出合并之后的HQL和页面显示的代码。
如果能解决。将追加5倍的分数作为酬谢 展开
4个回答
展开全部
select clry,count(clry) countlcry from DmtwhB group by clry;
给它一个别名。即countlcry,然后就跟你clry一样用就行了
给它一个别名。即countlcry,然后就跟你clry一样用就行了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
解决方案:
Java代码
Configuration classicCfg = new Configuration();
classicCfg.addSqlFunction( "count", new ClassicCountFunction());
classicCfg.addSqlFunction( "avg", new ClassicAvgFunction());
classicCfg.addSqlFunction( "sum", new ClassicSumFunction());
SessionFactory classicSf = classicCfg.buildSessionFactory();
或
Java代码
//int count = ((Integer)query.uniqueResult()).intValue();
//改成
int count = ((Number)query.uniqueResult()).intValue();
//这样就可以两个版本同时兼容.
//第一种方法:
String hql = "select count(*) from User as user";
Integer count = (Integer)getHibernateTemplate().find(hql).listIterator().next();
return count.intValue();
//第二种方法:
String hql = "select count(*) from User as user";
return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue();
//第三种方法:
String hql = "select count(*) from User as user";
Query query = getHibernateTemplate().createQuery( getSession(),hql);
return ((Integer)query.uniqueResult()).intValue();
Java代码
Configuration classicCfg = new Configuration();
classicCfg.addSqlFunction( "count", new ClassicCountFunction());
classicCfg.addSqlFunction( "avg", new ClassicAvgFunction());
classicCfg.addSqlFunction( "sum", new ClassicSumFunction());
SessionFactory classicSf = classicCfg.buildSessionFactory();
或
Java代码
//int count = ((Integer)query.uniqueResult()).intValue();
//改成
int count = ((Number)query.uniqueResult()).intValue();
//这样就可以两个版本同时兼容.
//第一种方法:
String hql = "select count(*) from User as user";
Integer count = (Integer)getHibernateTemplate().find(hql).listIterator().next();
return count.intValue();
//第二种方法:
String hql = "select count(*) from User as user";
return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue();
//第三种方法:
String hql = "select count(*) from User as user";
Query query = getHibernateTemplate().createQuery( getSession(),hql);
return ((Integer)query.uniqueResult()).intValue();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、你这两个表有没有关系,没有关系的话,Hibernate不可能合并到一张表中,或者说很不容易合并到一张中...你可以先想想你那两句SQL怎么合并...结构都不知道,怎么合并...
2、问题是count(clry)的值在表中没有字段与其对应
返回的是Object[]类型的东东,你自己根据你的HQL转换一下就可以,不需要与表对应
2、问题是count(clry)的值在表中没有字段与其对应
返回的是Object[]类型的东东,你自己根据你的HQL转换一下就可以,不需要与表对应
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题我以前也遇到过,比你的复杂些,用hql试了n种方法都行不通,后来用 sql搞定
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
List list = session.createSQLQuery(sql).list();
<c:forEach var="li" item="${list}">
${li[0]}${li[1]}
</c:forEach>
楼主试试吧
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
List list = session.createSQLQuery(sql).list();
<c:forEach var="li" item="${list}">
${li[0]}${li[1]}
</c:forEach>
楼主试试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询