2015-06-03 111 views
0

我有型號/實體如下:Java的單表繼承在DB結構中使用JPA /休眠

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

我想在數據庫有兩個表: InsuranceHiv_Answer

我想那實體:Hiv_AnswerHiv_AnswerForEntitiesHiv_Answer(每股普通ID池)被持久化

我想有表Insurance關係表Hiv_Answer f.e.在Hiv_Answer_id

我已經嘗試了很多組合與註解。沒有工作就像它supose。

我現在的配置似乎是確定的,但事實並非如此。我得到額外的表格:Hiv_AnswerForEntities,我根本沒有關係到Hiv_Answer表格。

看來,改用strategy=InheritanceType.SINGLE_TABLEHiv_Answer實體使用它strategy=InheritanceType.TABLE_PER_CLASS從超Answer

我找不到我的錯誤。

請幫我解決這個問題。

+0

可能是你需要@Inheritance在Hiv_AnswerForEntities表? – prabugp

+0

我已將該註釋添加到'Hiv_AnswerForEntities'實體,但沒有任何更改。還是一樣。 – masterdany88

回答

0

在JPA你不能重新定義繼承策略下的繼承樹,傳承的根定義設置它爲整個繼承樹

+0

這樣的恥辱。是否有可能在任何其他持久框架中知道?他們會在規範中考慮這個問題嗎? – masterdany88

+0

JDO持久性API已允許多年。 –

+0

從未使用過的JDO。所以我必須以其他方式解決它... – masterdany88