映射子类时除了要映射子类所对应的表外,还要映射父类表与子类表所关键的主键。例如,映射的RegularEmployeeEO实体代码如下所示:
RegularEmployeeEO实体
@Entity
@Table(name = "tb_regular_employee")
@DiscriminatorValue("regular")
@PrimaryKeyJoinColumn(name="id")
public class RegularEmployeeEO extends EmployeeEO{
//代码省略
}
其中@PrimaryKeyJoinColumn注释,所标注的为父类实体所对应的表与子类实体所对应表关联的主键。
其他的子类实体与RegularEmployeeEO实体标注类似,如以下所示。
ContractEmployeeEO实体
@Entity
@Table(name = "tb_contract_employee")
@DiscriminatorValue("contract")
@PrimaryKeyJoinColumn(name="id")
public class ContractEmployeeEO extends EmployeeEO {
//代码省略
}
FTEmployeeEO实体
@Entity
@Table(name = "tb_fulltime_employee")
@DiscriminatorValue("fulltime")
@PrimaryKeyJoinColumn(name = "id")
public class FTEmployeeEO extends ContractEmployeeEO {
//代码省略
}
PTEmployeeEO实体
@Entity
@Table(name = "tb_parttime_employee")
@DiscriminatorValue("parttime")
@PrimaryKeyJoinColumn(name = "id")
public class PTEmployeeEO extends ContractEmployeeEO {
//代码省略
}