一个类WatElectric有一个属性是fillDate,表示填写日期,
class WatElectric{
private int id;
private Double income;
private Date fillDate;
// 省略getter和setter
}
在hibernate中,现在要要知道这个月的收入 比上一年的同期(就是去年的同一个月)是增加还是减少。
所以应该是一个自连接,不知道类应该怎么写, hbm.xml文件应该怎么写。还有hql语句怎么写呢。
感觉应该是一对一, 因为每一个月只有一个去年的同月份, 但不知如何下手
望各位能够回答我这个问题。。。
感觉需求不是很明确啊
1.填写日期是否报表日期?如果2月填写1月数据会否有问题?是否增加一个报表日期字段?
2.是否一个月只有一张表?多张表的话是否有唯一性的组合查询约束?
3.强烈建议不要使用自关联,面向对象设计时,同比统计不应该做关联,万一没有上一年同期的表呢?万一要统计上上一年呢?万一历史数据有删除呢?
4.建议还是在程序端做代码,即使要sql也可以通过条件直接查询出来,而不是通过关联关系,比如select a.income, b.income from T a,T b where year(a.date)=2013 and month(a.date)=1 and year(b.date)=2012 and month(a.date)=1类似的,具体看你的数据库了
你可以写一个存储过程把这个日期传过去,在存储过程中进行处理,可以还回一个数值,如果是正说明是增加,负数代表减少,要是数据量大的话,可以考虑在加索引,这样会好点。