类继承导致Hibernate多态查询问题
2014-12-10 00:00
543 查看
今天启动Tomcat,不经意间居然发现控制台报了如下Warn:
In memory,非常敏感的词汇,赶紧核查代码,定位到HQLQueryPlan的如下语句:
debug结果translators.length>1,原来我在Hibernate中有个TenantDictParam类继承了DictParam,这个DictParam类同时又直接当一个po用,两个对象都有对应独立的hbm映射文件,在使用HQL对这个基类进行查询时,Hibernate无法反向自动匹配对象是这个DictParam还是TenantDictParam,并最终导致上面的结果。
解决办法:在hbm的<class>中添加polymorphism="explicit"禁用多态
org.hibernate.engine.query.HQLQueryPlan - [http-bio-9080-exec-3] WARN - firstResult/maxResults specified on polymorphic query; applying in memory!
In memory,非常敏感的词汇,赶紧核查代码,定位到HQLQueryPlan的如下语句:
boolean needsLimit = hasLimit && translators.length > 1; QueryParameters queryParametersToUse; if ( needsLimit ) { log.warn( "firstResult/maxResults specified on polymorphic query; applying in memory!" );
debug结果translators.length>1,原来我在Hibernate中有个TenantDictParam类继承了DictParam,这个DictParam类同时又直接当一个po用,两个对象都有对应独立的hbm映射文件,在使用HQL对这个基类进行查询时,Hibernate无法反向自动匹配对象是这个DictParam还是TenantDictParam,并最终导致上面的结果。
解决办法:在hbm的<class>中添加polymorphism="explicit"禁用多态
相关文章推荐
- Hibernate继承映射与多态查询
- Hibernate深入学习(二):继承与多态查询-subclass
- Hibernate继承、多态查询(五)
- 【JavaEE】Hibernate继承映射,不用多态查询只查父表的方法
- 【Hibernate】继承映射的支持多态查询
- 【Hibernate 5】继承映射配置及多态查询
- 通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题
- Hibernate使用原生SQL多表查询时字段名相同导致查询数据覆盖问题解决办法
- 通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题
- Hibernate继承与多态查询-subclass
- 【Hibernate 5】继承映射配置及多态查询
- Hibernate深入学习(三):继承与多态查询,joined-subclass与union-subclass
- Hibernate继承映射与多态查询
- hibernate继承关系父子类查询问题解析
- 通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题
- 深入剖析C++继承,多态以及隐藏(三)(类层次中的转化问题)
- hibernate多对一查询问题
- hibernate多对一查询session is closed问题
- hibernate关闭多态查询
- 因数据库兼容级别低导致列转行查询出错问题的处理