使用JPA / Hibernate在db结构中继承Java SingleTable

时间:2015-06-03 13:26:37

标签: java hibernate jpa single-table-inheritance

我有以下模型/实体:

@Entity
@DiscriminatorColumn(name="type")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Insurance extends Generic<Insurance> {
    @OneToOne public myInsurance.models.liability.hivAndVHProtection.Hiv_Answer hivAndVHProtectionAnswer;
}


@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Answer extends Generic<Answer> {}

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorValue("A")
public class Hiv_Answer extends Answer {
    @OneToOne public HivAndVHProtection_Variant variant;
}

@Entity
@Inheritance
@DiscriminatorValue("E")
public class Hiv_AnswerForEntities extends Hiv_Answer {
    public int proffesionGroup;
    public int personCount;
    public int contributionPerPerson;
    @Transient public int totalContribution;
}

我想在db中有两个表: InsuranceHiv_Answer

我希望实体:Hiv_AnswerHiv_AnswerForEntities保留在表Hiv_Answer中(共享公共ID池)

我希望表Insurance与表Hiv_Answer f.e相关联。在专栏Hiv_Answer_id

我尝试了许多与注释的组合。没有像它那样工作。

我的当前配置似乎没问题,但事实并非如此。我正在获得额外的表:Hiv_AnswerForEntities,而我根本没有Hiv_Answer表的关系。

似乎使用来自strategy=InheritanceType.SINGLE_TABLE实体的Hiv_Answer来使用来自超类strategy=InheritanceType.TABLE_PER_CLASS的{​​{1}}

我找不到我的错误。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

在JPA中,您无法在继承树中重新定义继承策略,继承的根定义为整个继承树设置它