求救HQL语句
需求:t_user表包含有(uid,nick_name,score,win,lose)等字段,现在想做一个“战绩榜单”,根据(lose/win)的比值排序,只取前20名(可能会有并排的名次),个人目前对mysql语句熟一点,但我们老大就是要我用HQL实现,搞得我头都大了,希望对HQL比较熟悉的高手们可以指教一下,万分感谢。
------解决方案-------------------- HQL查的是你的实体类。。
就比如你的实体类名叫 t_user
hql就写 from t_user where order by lose,win
Query query=session.createQuery("from t_user where order by lose,win");
query.setFirstResult(0); //设置首行记录
query.setMaxResults(20);//设置查询到的最大记录树数
query.setFetchSize() //设置要查询的记录数
mysql不支持top,如果你熟悉sql语句。。
String sql = "这里写SQL的查询语句";
Query q = mysession.createSQLQuery(sql).addEntity(t_user.class);
hibernate这么弄也可以的。。。一样会给你转换成对象。。。
希望对你有帮助噢。。
------解决方案-------------------- from t_user(实体类) as t order by t.lose/t.win limit 0,20
hql和sql感觉差不多啊
怎么感觉我写的和sql一样呢
------解决方案-------------------- 还是楼上的对,,,,,忘记了----
------解决方案-------------------- 引用: 没这么简单的 是根据lose/win进行排序(/是指除,不是或者) 我知道根据order by 可以进行排序,但由于可能有并排名次的情况,所以不能简单取前20条记录 另外 HQL是不支持limit的
你用
String sql = "这里写SQL的查询语句";
Query q = mysession.createSQLQuery(sql).addEntity(t_user.class);
这么就支持了。。。直接写SQL。。。
------解决方案-------------------- sql和hql调用执行的函数也不一样sql调用的时候中间多一个sql,hql则相反之。