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:
Insurance
和 Hiv_Answer
我希望实体:Hiv_Answer
和 Hiv_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 中,您无法在继承树下重新定义继承策略,继承的根定义为整个继承树设置它
我有 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:
Insurance
和 Hiv_Answer
我希望实体:Hiv_Answer
和 Hiv_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 中,您无法在继承树下重新定义继承策略,继承的根定义为整个继承树设置它