ssh使用hibernate进行sql查询问题
我在项目里定义了一个pojo类,是各个单位得分明细表,是这样的:数据表的内容差不多是这样的。日期部门得分总分2014-1菊花小学8102014-2春春小学910定义的实体...
我在项目里定义了一个pojo类,是各个单位得分明细表,是这样的:
数据表的内容差不多是这样的。
日期 部门 得分 总分
2014-1 菊花小学 8 10
2014-2 春春小学 9 10
定义的实体类:
public class Score_detail {
private String id;
private String barcode;
private String dept;
private String noteb;
private int df;
private int kf;
//这里省略了种个get与set方法
}
}
然后就是映射文件:Score_detail.hbm.xml,spring配置,这些都没问题。
但是,我想用这条语句来进行查询:
String hql ="select (sum(kf)- sum(df))/ sum(kf)*10000 ,dept from Score_detail";
String mywhe =" where barcode='"+barcode+"' group by dept ";
hql += mywhe;
list = this.getHibernateTemplate().find(hql);
查询是可以的,不过呢,console是这样说的:
HQL: select (sum(kf)- sum(df))/ sum(kf)*10000 ,dept from com.pojo.Score_detail where barcode='201403151035' group by dept
SQL: select (sum(score_deta0_.kf)-sum(score_deta0_.df))/sum(score_deta0_.kf)*10000 as col_0_0_, score_deta0_.dept as col_1_0_ from score_detail score_deta0_ where score_deta0_.barcode='201403151035' group by score_deta0_.dept
如果我直接用上面组合成的hql语句在数据库中进行查询,得到的结果是这样的:
部门 总得分
菊花小学 98%
春春小学 99%
现在问题就是,在hibernate是转化成是上面sql语句,后面的 as col_0_0_ 是什么东西啊,我都没指定过。我现在只想要两个字段的数据(部门、总得分),然后在前台用list遍历出来,请问该怎么做? 展开
数据表的内容差不多是这样的。
日期 部门 得分 总分
2014-1 菊花小学 8 10
2014-2 春春小学 9 10
定义的实体类:
public class Score_detail {
private String id;
private String barcode;
private String dept;
private String noteb;
private int df;
private int kf;
//这里省略了种个get与set方法
}
}
然后就是映射文件:Score_detail.hbm.xml,spring配置,这些都没问题。
但是,我想用这条语句来进行查询:
String hql ="select (sum(kf)- sum(df))/ sum(kf)*10000 ,dept from Score_detail";
String mywhe =" where barcode='"+barcode+"' group by dept ";
hql += mywhe;
list = this.getHibernateTemplate().find(hql);
查询是可以的,不过呢,console是这样说的:
HQL: select (sum(kf)- sum(df))/ sum(kf)*10000 ,dept from com.pojo.Score_detail where barcode='201403151035' group by dept
SQL: select (sum(score_deta0_.kf)-sum(score_deta0_.df))/sum(score_deta0_.kf)*10000 as col_0_0_, score_deta0_.dept as col_1_0_ from score_detail score_deta0_ where score_deta0_.barcode='201403151035' group by score_deta0_.dept
如果我直接用上面组合成的hql语句在数据库中进行查询,得到的结果是这样的:
部门 总得分
菊花小学 98%
春春小学 99%
现在问题就是,在hibernate是转化成是上面sql语句,后面的 as col_0_0_ 是什么东西啊,我都没指定过。我现在只想要两个字段的数据(部门、总得分),然后在前台用list遍历出来,请问该怎么做? 展开
1个回答
展开全部
as col_0_0_这是hibernate内部框架实现,也就是hibernate.dialect。他会把你hql转换sql,主要是根据不同数据库做变化,省去你修改的麻烦。
List<Score_detail> sdList = (List<Score_detail>) getSession().createQuery(hql).list();
这样查询出来,然后遍历list,后用sd.getDep...就能取得你要的字段。
List<Score_detail> sdList = (List<Score_detail>) getSession().createQuery(hql).list();
这样查询出来,然后遍历list,后用sd.getDep...就能取得你要的字段。
更多追问追答
追问
怎样遍历list啊,我用for(Score_detail n : list){
System.out.println(n);
},但是提示错 误。
追答
你不会struts标签?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询