2012-10-03 103 views
4

我有一個類A和子類B和C具有不同的屬性。 我該怎麼做:從a a(a.class = B和a.specific-property-of-b = -c =「z」)hql的子類屬性

是否有可能讓hibernate明白,當它是某個類的實例時,它可以訪問它的特定屬性,或者不可能做這樣的事情,我必須做:

a從a a where a.id in(從b b選擇b.id,其中b.specific-property-of-b =「y」) 或a.id in(從c中選擇c.id c其中c.specific-property-of-c =「z」)

謝謝

回答

2

你這樣做,你建議:

select a from A a 
where (a.class = B and a.specificPropertyOfB = 'y') 
or (a.class = C and a.specificPropertyOfC = 'z') 

,將無法正常工作(在我的經驗)的唯一的事情是,如果你定義在兩個子類兩個同名的持久字段。

+0

當我嘗試這種方式時,我收到一個錯誤,因爲hibernate在C中查找specificPropertyOfB。所以現在我正在做第二種方式,但我不認爲它是最優的。 – user1718057