我需要对JPA / Hibernate继承做一些澄清。
假设我有一个由两个Fruit
和Apple
实体子类化的抽象Orange
实体。此外,我在数据库中有一个Orange
的实例。
我可以将此实例从数据库中检索为普通Fruit
并将其转换为Orange
吗?
答案 0 :(得分:1)
你可以做到:
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'
答案 1 :(得分:0)
从Fruit f中选择f,其中treat(f为橙色).somePropetyInOrange =:value