比如有一个表存储的是工人的基本信息Worker,包括id,name,sex,Gongzhi其中Gongzhi是Set里面包含该员工本年的每月工资记录现在要求该员工本年的工资合计,HQL怎么写
解决方案 »
- 怎样通过Ajax访问mySql?用上jQuery也可以!
- 使用java调用WinRAR等压缩软件对文件进行压缩及解压相关问题
- 看不懂这个bean,麻烦帮帮我
- iBatis棘手问题:数据类型转换!
- 在tomcat中配置filter的时候,如何配置 /abc/*.jsp这样的url-pattern?
- 关于不同服务器间移植
- eclipse里用selenium定位iframe问题。。
- 用集合映射的hibersnate的*.hbm.xml配置文件必须要手写吗?
- 问一个weblogic 的初浅奇怪问题
- 朋友们帮忙看一下,这个发送邮件时候总是报错,不知道哪里出错了,谢谢大家~~
- 读节点时为何有#test??
- main也实行了监听,CPU实苦了。
其次,就算你要这样,没有年月这个字段,怎么统计?
最后,如果有年月这个字段(6位char格式YYYYMM):
select gongzi from tbl where id =*** and substr(ym,1,4)='2009';,获取所有当年月工资记录。
select sum(gongzi) from tbl where id=*** and substr(ym,1,4)='2009';,获取当年总工资。
w.*,(select sum(金额一列) from Gongzi g where g.workerid=w.id and g.year<'2009-12-31' and g.year>'2009-01-01') as gongzi
from Worker w
private Integer id;
private String name;
private Sex sex;
private Set<Gongzhi> gongzis; private BigDecimal gzCount; private BigDecimal getGzCount(){
if(gongzis != null){
double count = 0d;
for(Gongzi gz : gongzis){
count+=gz.getMoney();
}
return new BigDecimal(String.value(count));//注意这里要四舍五入
}
return new BigDecimal("0.00");
}
}Hibernate查询仍按常规查询(例如条件按月份),上层类中调用getGzCount()即是工资合计;jsp中${gzCount}就可。