Hibernate继承问题

时间:2010-07-16 11:05:25

标签: hibernate

我正在使用Hibernate 3.0。我在使用连接子类时面临一个问题。

这是一个小例子

我有一个动物超级类,我有2个子类Dog和Cat。 我正在加入子类来定义这种关系。

当我做的时候

Query query=session.createQuery("from Animal");
它正在抓取动物,狗和猫的物体。

由于提取时间较长,这会产生问题。

任何相同的解决方案。

2 个答案:

答案 0 :(得分:0)

我假设您只想要Animal实例,而不是它们的子类?

这在JPA中有点棘手,因为猫也是动物,所以它们会被归还。

您必须从查询中手动排除它们,如下所示:

from Animal a 
     where a.id not in (select c.id from Cat c)
       and a.id not in (select d.id from Dog d)

(因为你有这个问题,在这种情况下,多态性可能不是完美的解决方案。)

答案 1 :(得分:0)

您可以通过在xml映射中设置polymorphism="explicit"来关闭此类的隐式多态,或者使用hibernate注释@Entity(polymorphism=PolymorphismType.EXPLICIT)