如何在 jpa 中使用联接的子实体获取继承实体



写这个案例会更容易解释。

我正在使用Seam 2.3.1 v Hibernate JPA 2.0和我们的项目。我有一个Person实体类的基数。

@Entity
@Name("person")
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "person")
public class Person extends BaseEntity  {
    private String name;
    private String surName;
    private String email;
    private String phone;
    // getter & setters
}

我还有 3 个实体从 Person 扩展为@Inheritance(strategy = InheritanceType.JOINED)PersonelMusteriDisPaydas

@Entity
@Name("personel")
public class Personel extends Person {
    private String appellation; 
    // getter & setters
}

我想在我的豆子中列出人员、集合和 dispaydas,但是当我在我的组实体中设置它们时,我想将它们保存为人员。

事实上,在DB中,person_id和personel_id之间没有区别,它们是相同的。但是,当我列出它时,它们是List<Personel>

总结:

我想从List<Personel>那里得到List<Person>或从Personel对象Person

您必须在

Person类中为person_id定义一个@Id@Column

但是,由于该列在子实体中具有不同的名称,因此您需要使用 @AttributeOverride 将其更改为指向personel_id @Column

父母中使用@DiscriminatorColumn,在孩子中使用@DiscriminatorValue不会有什么坏处,但我认为 Hibernate 不需要这些。

最新更新