JPA 2/Hibernate で複合主キーと外部キーを機能させるのに問題があります。国と州で簡単なシナリオを作成しようとしています:
国エンティティ:
@Entity
@Table(name = "country")
public class Country extends DomainObjectBase implements Serializable {
@Id
@Basic(optional = false)
@Column(name = "code")
private String code;
@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;
@MapsId("country_code")
@JoinColumn(name = "country_code", referencedColumnName = "code", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Country country;
}
これにより、1 つの例外を除いて正しいテーブルが作成されます。
国テーブル:
- コードPK
- ...
州表
- code PK FK -これは、国テーブルのコード列への外部キー参照の作成に問題がある場所です
- country_code FKこれは私が望む唯一の外部キー参照です
- ...
エンティティ/複合キーを hibernate にマップして、必要なスキーマを生成するにはどうすればよいですか? 現在、その国には州コードが含まれていると予想されるため、データを州に挿入できません!
助けてくれてありがとう。