请教一个hql语句【急问!】【100%结贴!】

blue_ps 2011-05-05 03:24:48
请教一个hql语句,问题大致是这样的:
有一个teacher类,属性有:id,name,year(年份),point(作为分数)【char4的string】
现在要写一个hql语句,实现查询出比上年进步了10%或者20%的学生的列表。
比如:有数据如下:
1,张三,2008,63
2,张三,2009,80,
3,张三,2010,76
4,张三,2011,90
5,李四,2008,30
6,李四,2009,35
7,李四,2010,60
8,李四,2011,61

比上年进步10%的数据有:
2,张三,2009,80,
4,张三,2011,90
6,李四,2009,35
请各位给思路,如果有好idea,请不吝赐教!谢谢。
【急问!】【100%结贴!】




...全文
82 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_ps 2011-05-05
  • 打赏
  • 举报
回复
我已经自己解决了。
其实是一个多表查询,返回多对象的问题。
解决办法可以参考这个描述:
Object []object = (Object[]) dataList.get(i);
Model model= (Model ) object[0];
也就是取第一个对象。
不过还是感谢帮忙解答的朋友,分就送给你吧。
blue_ps 2011-05-05
  • 打赏
  • 举报
回复
嗯谢谢你的存储过程的建议、
SQL的语句我可以构造出,可是HQL的不知道如何写,虽然把变量和属性对话,表名和类名对换,但是变换之后使用 getHibernateTemplate().find(queryString, value);出来的就不是一个model的对象了。而是一个object的。
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to org.test.Student
不知道是不是我的方法错误?

[Quote=引用 1 楼 zxingchao2009 的回复:]

统计2009年比2008年进步10%到30%之间的学生
SQL code

SELECT b.id,b.name,b.year,b.point FROM (SELECT id,NAME,YEAR,POINT FROM stu WHERE YEAR='2008')a,(SELECT id,NAME,YEAR,POINT FROM stu WHERE YEAR='2009') b
WHER……
[/Quote]
UPC_思念 2011-05-05
  • 打赏
  • 举报
回复
统计2009年比2008年进步10%到30%之间的学生

SELECT b.id,b.name,b.year,b.point FROM (SELECT id,NAME,YEAR,POINT FROM stu WHERE YEAR='2008')a,(SELECT id,NAME,YEAR,POINT FROM stu WHERE YEAR='2009') b
WHERE a.name=b.name AND (b.point*1.0/a.point)>=1.0 AND (b.point*1.0/a.point)<=3.0


像你这个业务最好使用存储过程,动态的传年份

67,513

社区成员

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

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