JPA 2 - 仅包含复合主键中的一个字段的外键?
我在使用JPA 2 / Hibernate中的复合主键和外键时遇到问题。我正在尝试用国家和省份创建一个简单的场景:
国家实体:
@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 - 问题在于它创建了对country table的代码列的外键引用
country_code FK这是我想要的唯一外键引用
名称
如何映射hibernate的实体/组合键以生成我想要的模式?现在我无法将任何数据插入省,因为它期望该国家/地区包含省代码!
谢谢你的帮助。
没有找到相关结果
已邀请:
2 个回复
殿虫
阀傻
参数必须与
类中的属性名称匹配。
应标记为
,然后才有效。这是代码 -
希望能帮助到你。