hibernate继承关系父子类查询问题解析

         这两天修改我们项目的告警模块,告警模块设计是有个当前的告警表(AlarmInfo),还有个历史告警表(HistoryAlarmInfo),在Hibernate配置文件中这两个对象并未配置继承关系,而当前告警表数据量较小,因为存放实时的告警信息,而历史告警表数据量很大,存放很长时间的历史告警数据达到近千万级了。今天我写了个Hibernate的hql查询当前告警表AlarmInfo,里面数据仅有几条,居然执行一个查询用了10几分钟,执行多了还搞得OutOfMemory,heap error。而怪的是在PL SQLDEVELOPER里查这表却很快,而且用jdbc改写的sql也查询得很快,查来查去就去看两个对象的POJO是怎么写的。一看HistoryAlarmInfo是继承于当前告警表AlarmInfo的子类,而历史告警表数据量巨大,我就想到和这个继承关系有关,于是取消了POJO的继承关系,结果一切正常。

        结论,查了下网上的一些说法,在查询Hibernate的父类对象结果时,Hibernate会自动left join他的子类所在的表,所以对于这种继承关系的查询一定要小心。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值