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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengchang_1981/article/details/8030046

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

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

猜你喜欢

转载自blog.csdn.net/pengchang_1981/article/details/8030046
今日推荐