使用JPA映射多态列表?

时间:2013-03-21 15:29:02

标签: java hibernate inheritance jpa orm

假设我有:

//inheritance annotations 
public abstract class Animal {
    private int noOfLegs;
    //...
}

//inheritance annotations 
public class Cat extends Animal {
    //cat stuff
}

//inheritance annotations 
public class Dog extends Animal {
    //dog stuff
}

@Entity
public class House {
    @OneToMany
    @JoinTable(//join stuff
    private List<Animal> animals;
    //hose stuff
}

现在,如果我把猫和狗放在我的房子里,并坚持我的房子,JPA是否知道将狗和猫放在相应的表中(或者使用任何继承映射策略)。它也知道如何在查询时取回它吗?

1 个答案:

答案 0 :(得分:2)

简短的回答是肯定的。但是关于继承映射的本机hibernate支持比标准JPA更强大,并且“每个类的单个表”或“每个子类的表”映射策略比“每个具体类的表”策略更适合于多态查询和关联。

另见: