Java 使用 JPA/Hibernate 的数据结构中的单表继承

Java SingleTable inheritance in db structure using JPA/Hibernate

我有 models/Entities 如下:

@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;
}

我想在数据库中有两个 table: InsuranceHiv_Answer

我希望实体:Hiv_AnswerHiv_AnswerForEntities 持久保存在 table Hiv_Answer(共享公共 ID 池)

我想 table Insurance 与 table Hiv_Answer f.e 的关系。在 Hiv_Answer_id

列中

我尝试了很多与注释的结合。 None 像预期的那样工作。

我的当前配置似乎还可以,但事实并非如此。我得到了额外的 table: Hiv_AnswerForEntities,而我与 Hiv_Answer table 完全没有关系。

似乎改为使用 Hiv_Answer 实体中的 strategy=InheritanceType.SINGLE_TABLE 它使用超类 Answer

中的 strategy=InheritanceType.TABLE_PER_CLASS

我找不到我的错误。

请帮我解决这个问题。

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