Table Columns: id, product_name, type, entity1,entity2
以type字段爲區別, @DiscriminatorValue(name="baseType") baseType對應BaseEntity, 保存或查詢時type="baseType".
Entity1和Entity2和保存或查詢時type="entity1Type"和type="entity2Type"
@Entity
@Table(name = "base_table_name")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue(name="baseType")
public class BaseEntity{
@Id
@Column(name = "id")
private String id;
@Column(name = "product_name")
private String productName;
}
@Entity
@DiscriminatorValue(name="entity1Type")
public class Entity1 extends BaseEntity{
@Column(name = "entity1")
private String entity1;
}
@Entity
@DiscriminatorValue(name="entity2Type")
public class Entity2 extends BaseEntity{
@Column(name = "entity2")
private String entity2;
}