SQL语句转HQL语句,高手请进

吉普赛的歌 2010-08-26 08:59:10
表:ballotInfo
字段:id(bigint),teamName(varchar(50)),phone(varchar(20))

SQL语句:
select teamName,count(teamName),
count(teamName)/(select count(*) from ballotinfo)
from ballotInfo b group by teamName

要怎么转换成HQL语句呢?
String hql="select b.teamName,count(b.teamName)"+
",500*count(b.teamName)"+
",(select count(t2) from BallotInfo t2)"+
",500*count(b.teamName)/(select count(t3) from BallotInfo t3)"+ //加了这一句,立马报错,其它地方没有问题
" from BallotInfo b group by b.teamName order by count(b.teamName)";

小弟实在是没有分了, 先行谢过!
...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2010-08-27
  • 打赏
  • 举报
回复
引发了另一个问题:
public List countInfo() {
return (List)super.getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(Session session) throws HibernateException,
SQLException {
//定义一个最终返回的集合
List<Result> resultList=new ArrayList<Result>();
//得到每一个国家的投票数
String sql="select teamName,count(teamName),"+
"500*count(teamName)/(select count(*) from ballotinfo) "+
"from ballotInfo b group by teamName";
Query query2=session.createSQLQuery(sql);
List list2=query2.list();
//把原来的结果,转到List<Result>这个专门的集合中去
Iterator it=list2.iterator();
while (it.hasNext()) {
Object[] arr=(Object[])it.next();
System.out.println("元素个数:"+arr.length);
Result result=new Result();
result.setName(arr[0].toString());
result.setNum((Integer)arr[1]);
result.setWidth((Integer)arr[2]);
System.out.print(result.getName()+"\t");
System.out.print(result.getNum()+"\t");
System.out.println(result.getWidth());
System.out.println("--------------------");
resultList.add(result);
}
return resultList;
}
});
}

在我这段程序执行之后的结果居然是这样的:
元素个数:3
德国 22 22
--------------------
元素个数:3
荷兰 11 11
--------------------
元素个数:3
乌拉圭 20 20
--------------------
元素个数:3
西班牙 14 14
--------------------
按道理应该不同啊, 怎么可能第二个值和第三个值一模一样呢?????
吉普赛的歌 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bao110908 的回复:]
并不要拘泥于什么事情都采用 HQL 解决,能用 SQL 解决的话就用 SQL,没有必要再转成 HQL!

况且 ORM 工具并不是只有 Hibernate!
[/Quote]
老大,我只会Hibernate这个玩意, 人家又是考试题.
不过,如雷贯耳!以前老师也没有说过不行, 一直以为:hql在功能上与sql媲美.
看看你胸花,小弟就信你了!
  • 打赏
  • 举报
回复
并不要拘泥于什么事情都采用 HQL 解决,能用 SQL 解决的话就用 SQL,没有必要再转成 HQL!

况且 ORM 工具并不是只有 Hibernate!
  • 打赏
  • 举报
回复
不要把 SQL 与 HQL 混为一谈!

所有的 HQL 都能转换成 SQL,但是绝大多数的 SQL 是无法转换成为 HQL 的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧