写这个案例会更容易解释。
我正在使用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)
:Personel
、Musteri
、DisPaydas
@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 不需要这些。