[英]Composite key mapping JPA+Hibernate
我对项目中实体之间的关系存在问题,其中所有实体都具有由3个字段组成的主键;
Product(**ck_del, cod_empresa, codigo**, description, cod_group, cod_tax);
Group(**ck_del, cod_empresa, codigo**, description);
Tax(**ck_del, cod_empresa, codigo**, description);
//Mapping in the entity PRODUCT
@ManyToOne
@JoinColumn(name="COD_GROUP" , referencedColumnName="CODIGO")
private Group group;
@ManyToOne
@JoinColumn(name="COD_TAX" , referencedColumnName="CODIGO")
private Tax tax;
当我尝试将实体实体与其他两个实体映射时,每个实体的代码只返回错误:
referenced.Product.group引用models.Group引用模型的引用名称(CODIGO)。组未映射到单个属性
可能是因为主要组密钥是复合的,有没有办法在不必更改实体的主键的情况下建立这种关系?
问题:
就像您在问题中预测的那样,问题来自于您的实体Id
由三columns
组成,并且您在@JoinColumn
注释中仅在ManyToOne
关系中引用它。
解:
因此,您不必更改Entity主键,但是应该在ManyToOne
映射中引用三个连接列而不是一个。
您应该在以下两种关系中更改它:
@ManyToOne
@JoinColumn(name="COD_TAX" , referencedColumnName="CODIGO")
private Tax tax;
以下内容:
@ManyToOne
@JoinColumns({
@JoinColumn(name="COD_TAX" , referencedColumnName="CODIGO"),
@JoinColumn(name="CK_DEL" , referencedColumnName="CK_DEL"),
@JoinColumn(name="CODE_EMPRESA", referencedColumnName="CODE_EMPRESA")
})
private Tax tax;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.