我正在使用Hibernate 3.0。我在使用连接子类时面临一个问题。
这是一个小例子
我有一个动物超级类,我有2个子类Dog和Cat。 我正在加入子类来定义这种关系。
当我做的时候
Query query=session.createQuery("from Animal");
它正在抓取动物,狗和猫的物体。
由于提取时间较长,这会产生问题。
任何相同的解决方案。
答案 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)