我需要一些關於JPA/Hibernate繼承的說明。JPA/Hibernate繼承和一個實體的運行時類型的子類抽象超類/實體
假設我有一個抽象Fruit
實體,它被兩個Apple
和Orange
實體分類。此外,我在數據庫中有一個Orange
的實例。
我可以從數據庫中以普通Fruit
的形式檢索此實例並將其轉換爲Orange
?
我需要一些關於JPA/Hibernate繼承的說明。JPA/Hibernate繼承和一個實體的運行時類型的子類抽象超類/實體
假設我有一個抽象Fruit
實體,它被兩個Apple
和Orange
實體分類。此外,我在數據庫中有一個Orange
的實例。
我可以從數據庫中以普通Fruit
的形式檢索此實例並將其轉換爲Orange
?
那麼你可以這樣做:
Fruit fruit = dao.get(id, Fruit.class)
if(fruit instanceof Orange)
{
(Orange) fruit
}
,並在運行時會得到相應的類型。但是如果你寫一個HQL
你可以檢查它的運行時類型。如果你完成了你的繼承和映射,這通常是不需要的。
select f from Fruit f where f.class = 'a.b.c.Fruit'
,選擇F f其中治療(F爲橙色).somePropetyInOrange =:值