我正在使用Hibernate 3.0。我在使用連接的子類時遇到了一個問題。Hibernate繼承問題
這裏是一個小例子
我有一個動物超類,和我有2個classses狗和貓。 我是jusing加入子類來定義這種關係。
當我這樣做
Query query=session.createQuery("from Animal");
它取的動物,狗和貓的對象。
由於獲取時間更多,這會產生問題。
相同的任何解決方案。
我正在使用Hibernate 3.0。我在使用連接的子類時遇到了一個問題。Hibernate繼承問題
這裏是一個小例子
我有一個動物超類,和我有2個classses狗和貓。 我是jusing加入子類來定義這種關係。
當我這樣做
Query query=session.createQuery("from Animal");
它取的動物,狗和貓的對象。
由於獲取時間更多,這會產生問題。
相同的任何解決方案。
我假設你只想要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)
(如你有這個問題,也許多態性是不是在這種情況下,完美的解決方案)
您可以切換 - 通過在xml映射中設置polymorphism="explicit"
,或使用休眠註釋
指定此類的隱式多態性您的意思是你只想返回'Animal'實體,而不是'Dog'或'Cat'? – skaffman 2010-07-16 11:20:35
到底什麼是你的問題?我不明白。 – 2010-07-16 11:24:34
[每個子類的繼承關係表:如何在不加載任何子類的情況下針對父類進行查詢? (休眠)](http://stackoverflow.com/questions/2700680/table-per-subclass-inheritance-relationship-how-to-query-against-the-parent-clas) – 2010-07-16 14:33:03