2010-07-16 132 views
0

我正在使用Hibernate 3.0。我在使用連接的子類時遇到了一個問題。Hibernate繼承問題

這裏是一個小例子

我有一個動物超類,和我有2個classses狗和貓。 我是jusing加入子類來定義這種關係。

當我這樣做

Query query=session.createQuery("from Animal"); 

它取的動物,狗和貓的對象。

由於獲取時間更多,這會產生問題。

相同的任何解決方案。

+0

指定此類的隱式多態性您的意思是你只想返回'Animal'實體,而不是'Dog'或'Cat'? – skaffman 2010-07-16 11:20:35

+0

到底什麼是你的問題?我不明白。 – 2010-07-16 11:24:34

+0

[每個子類的繼承關係表:如何在不加載任何子類的情況下針對父類進行查詢? (休眠)](http://stackoverflow.com/questions/2700680/table-per-subclass-inheritance-relationship-how-to-query-against-the-parent-clas) – 2010-07-16 14:33:03

回答

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) 

(如你有這個問題,也許多態性是不是在這種情況下,完美的解決方案)

0

您可以切換 - 通過在xml映射中設置polymorphism="explicit",或使用休眠註釋