在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) {...}
}
感谢您的帮助!