Hibernate:使用具有常量值的复合键连接表

时间:2016-01-05 10:57:12

标签: java spring hibernate jpa

在hibernate中,我有一个父表和一个具有oneToOne关系的子项。

子表有一个复合键。

其中一个键(CODE_TYPE_ENTITE)是父表的常量值。 如何在不使用父表中具有默认值的sql字段的情况下声明它?

编辑:CODE_TYPE_ENTITE不是子表ADRESSE_REF中的常量。但这种关系仅存在于CODE_TYPE_ENTITE ==' CINT'

以下代码正在运作,但我对此并不满意......

表1:

@Entity
@Table(name = "CABINET_INTERMEDIAIRE")
public class CabinetIntermediaire implements Serializable {
    private String codeCabinet;
    private AdresseRef adresseRef;
    private String codeTypeEntite;

    @Id
    @Column(name = "CODE_CABINET")
    public String getCodeCabinet() {...}

    public void setCodeCabinet(String codeCabinet) {...}

    @Basic
    @Column(name= "CODE_TYPE_ENTITE")
    public String getCodeTypeEntite() {...}

    public void setCodeTypeEntite(String codeTypeEntite) {...}

    @OneToOne(fetch = FetchType.EAGER)
    @JsonIgnore
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumns({
        @JoinColumn(name = "CODE_CABINET", referencedColumnName = "CODE_ENTITE", insertable = false, updatable = false),
        @JoinColumn(name= "CODE_TYPE_ENTITE", referencedColumnName = "CODE_TYPE_ENTITE", insertable = false, updatable = false)
    })
    public AdresseRef getAdresseRef() {...}

    public void setAdresseRef(AdresseRef adresseRef) {...}
}

表2:

@Entity
@Table(name = "ADRESSE_REF", schema = "EXTRANET", catalog = "")
@IdClass(AdresseRefPK.class)
public class AdresseRef implements Serializable{
    private String codeTypeEntite;
    private String codeEntite;

    @Id
    @Column(name = "CODE_TYPE_ENTITE")
    public String getCodeTypeEntite() {...}

    public void setCodeTypeEntite(String codeTypeEntite) {...}

    @Id
    @Column(name = "CODE_ENTITE")
    public String getCodeEntite() {...}

    public void setCodeEntite(String codeEntite) {...}
}

感谢您的帮助!

0 个答案:

没有答案