zidane1000
2013-01-22 17:29 阅读 557
已采纳

hibernate 如何自关联

一个类WatElectric有一个属性是fillDate,表示填写日期,

class WatElectric{

    private int id;

    private Double income;

    private Date fillDate;

    // 省略getter和setter

}

 

在hibernate中,现在要要知道这个月的收入 比上一年的同期(就是去年的同一个月)是增加还是减少。

所以应该是一个自连接,不知道类应该怎么写, hbm.xml文件应该怎么写。还有hql语句怎么写呢。

感觉应该是一对一, 因为每一个月只有一个去年的同月份, 但不知如何下手

望各位能够回答我这个问题。。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    h248980496 h248980496 2013-01-23 10:52

    感觉需求不是很明确啊
    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类似的,具体看你的数据库了

    点赞 评论 复制链接分享
  • jinandmei jinbingchuan 2013-01-22 18:21

    你可以写一个存储过程把这个日期传过去,在存储过程中进行处理,可以还回一个数值,如果是正说明是增加,负数代表减少,要是数据量大的话,可以考虑在加索引,这样会好点。

    点赞 评论 复制链接分享

相关推荐