hql使用聚合函数之小结

来源:互联网 发布:windows 10官方下载 编辑:程序博客网 时间:2024/06/06 10:07

  之前做了个项目,其中涉及到hql语句中使用聚合函数,真那个纠结啊!现将我的一些总结分享一下(仅限个人所理解,有不对之处,尽请谅解。)

  首先,要使用聚合函数,得到的就不是int类型数据,所以在定义pojo类属性时得注意了。

private double change_count; private double wlan_count; private double data_count; private double send_count; private double electricy_count; private double platform_count; private double totle_count;

当然也可以用Long类型。

这是第一点,第二点需要注意的是hql语句了,如:

String hql="select new cn.com.starit.local.persistence.po.NetWorkFaultType(sum(t.change_count),sum(t.wlan_count)," +"sum(t.data_count),sum(t.send_count),sum(t.electricy_count),sum(t.platform_count),sum(t.totle_count)) from NetWorkFaultType t" +" where timeid between '"+20131201+"' and '"+20131231+"'";

其中new出来的对象里必须要有这些值的构造函数(同时需要一个空构造)。

public NetWorkFaultType(double change_count,double wlan_count,double data_count,double send_count,double electricy_count,double platform_count,double totle_count){this.change_count=change_count;this.wlan_count=wlan_count;this.data_count=data_count;this.send_count=send_count;this.electricy_count=electricy_count;this.platform_count=platform_count;this.totle_count=totle_count;}
public NetWorkFaultType(){}

好了,注意到这两点,基本上就已经可以查询了。现在来说一下不用聚合函数的方法。

呵呵,之前在CSDN论坛发了个帖子,里面有不用聚合函数求值的方法,我是想到当初我遇到这个问题的时候在网上找资料的痛苦过程,因此分享一下,献一下丑。

帖子的地址如下:http://bbs.csdn.net/topics/390679437

希望能给遇到这类问题的童鞋带来一些必要的帮助吐舌头

0 0