我無法獲得在JPA 2/Hibernate中工作的組合主鍵和外鍵。我試圖創建國家和省一個簡單的場景:JPA 2 - 僅包含複合主鍵中的一個字段的外鍵?
國家實體:
@Entity
@Table(name = "country")
public class Country extends DomainObjectBase implements Serializable {
@Id
@Basic(optional = false)
@Column(name = "code")
private String code;
@Basic(optional = false)
@Column(name = "name")
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "country")
private List<Province> provinces;
}
省主鍵:
@Embeddable
public class ProvincePK implements Serializable {
@Basic(optional = false)
@Column(name = "code")
private String code;
@Basic(optional = false)
@Column(name = "country_code")
private String countryCode;
}
省實體:
@Entity
@Table(name = "province")
public class Province extends DomainObjectBase implements Serializable {
@EmbeddedId
protected ProvincePK provincePK;
@Basic(optional = false)
@Column(name = "name")
private String name;
@MapsId("country_code")
@JoinColumn(name = "country_code", referencedColumnName = "code", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Country country;
}
這爲我創建正確的表格有一個例外:
國家表:
- 碼PK
- 名
省表
- 碼PK FK - 這是哪裏的問題是它的創建外鍵引用國家表代碼欄
- council try_code FK 這是唯一的外鍵引用我想
- 名
如何映射我的實體/複合體對Hibernate來生成我想要的架構鍵?現在我不能在省內插入任何數據,因爲它期望該國家包含省代碼!
感謝您的任何幫助。