首页新闻找找看学习计划

Hibernate4继承映射 只查父表不查子表的问题

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-11-21 20:45

继承映射,采取joined-classes的方式,即公共信息存在父表里,数据库共有animal, cat, dog三张表:

@Entity class Animal{...}

@Entity class Cat extends Animal{...}

@Entity class Dog extends Animal{...}

如果执行下面的查询:

HQL(Criteria) : "from Animal where..."

会生成

select ... from animal

  left outer join cat on ...

  left outer join dog on...

当子表太多的时候,这样的查询效率太低,而实际上我也只需要animal表里的信息,我想让它执行select ... from animal where...,这样就可以了。该怎么配置呢?

现在网上通用的一些答案:

1. @Polymorphism(type=PolymorphismType.EXPLICIT)

这种方法关闭多态查询好像只针对"每个具体的子类一张表"的结构,joined-classes不起作用。

2. 直接写sql不知道可不可以,但是这个方案是末选的了,比如我想得到我家里所有动物的列表,如果能通过配置解决这个问题,那么一条语句通过关联映射就可以得到结果了,用sql就麻烦了。

所以请教大神们,Polymorphism不起作用的情况下,怎么能关闭多态查询吗?

琴剑飘零的主页 琴剑飘零 | 菜鸟二级 | 园豆:409
提问于:2014-08-12 13:41
< >
分享
所有回答(1)
0

你好,你能给我发一份hibernate4.3.5的资源吗?yang_shuang163@163.com谢谢!

YOYOYS | 园豆:210 (菜鸟二级) | 2017-10-14 01:27

资源是指啥?

支持(0) 反对(0) 琴剑飘零 | 园豆:409 (菜鸟二级) | 2017-10-16 10:16

@琴剑飘零: 就是hibernate4.3.5的官方源代码  就是jar包

支持(0) 反对(0) YOYOYS | 园豆:210 (菜鸟二级) | 2017-10-16 19:23

@琴剑飘零: 谢啦  

支持(0) 反对(0) YOYOYS | 园豆:210 (菜鸟二级) | 2017-10-16 19:23

@YOYOYS: 看源码就直接clone github上的看呗,https://github.com/hibernate/hibernate-orm,切换到4.3的branch,或者在项目里用maven之类的工具引hibernate的包:

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>

支持(0) 反对(0) 琴剑飘零 | 园豆:409 (菜鸟二级) | 2017-10-17 11:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册