首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JPA/Hibernate实现数据库结构中的Java SingleTable继承

使用JPA/Hibernate实现数据库结构中的Java SingleTable继承
EN

Stack Overflow用户
提问于 2015-06-03 13:26:37
回答 1查看 80关注 0票数 0

我有以下模式/实体:

代码语言:javascript
复制
@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实体,它使用来自超类Answerstrategy=InheritanceType.TABLE_PER_CLASS

我找不到我的错误。

请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 14:52:08

在JPA中,不能在继承树中重新定义继承策略,继承的根定义为整个继承树设置继承策略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30621492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档