提问人:차재욱 提问时间:11/14/2023 最后编辑:차재욱 更新时间:11/15/2023 访问量:27
如何使用复合键映射两个表,但只映射一个 pk
How to map the two tables using composite key but map just one pk
问:
公司表
- varchar 代码 (PK)
- varchar biznumber (PK)
合约表
- varchar 代码 (PK)
- varchar 模块 (PK)
这两个表仅映射列代码。
我可以使用 IdClass referencedColumn 解决这个问题,只需一列。
但是当我从 JDK 版本 17 降级到 11 时 这是行不通的。
我尝试将 IdClass 与复合键一起使用。当我映射这个实体时,我使用了关于列代码的 referencedcolumn。
不好意思。我看到了你的评论。所以我上传了我的代码。 因为这段代码与我的 Compant 项目有关。所以我担心上传代码。
所以我在组织后上传了我的代码谢谢。
公司简介PK.java
@NoArgsConstructor
@EqualsAndHashCode
@Getter
public class CompanyPK implements Serializable{
private String code;
private String biznumber;
@Builder
public CompanyPK(String code, String biznumber)
{
this.code=code;
this.biznumber=biznumber;
}
}
公司:.java
@Entity
@Getter
@IdClass(CompanyPK.class)
public class Company{
@Id
@Column(name="company_code")
private String code;
@Id
@Column(name="company_biznumber")
private String biznumber;
}
合约PK.java
@NoArgsConstructor
@EqualsAndHashCode
@Getter
public class ContractPK implements Serializable{
private String companyCode;
private String moduleCode;
@Builder
public ContractPK(String companyCode, String moduleCode) {
this.companyCode = companyCode;
this.moduleCode = moduleCode;
}
}
合同.java
@Entity
@Getter
@IdClass(ContractPK.class)
public class Contract extends BaseEntity{
@Id
@Column(name="company_code")
private String companyCode;
@Id
@Column(name="module_code")
private String moduleCode;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="company_code", referencedColumnName="company_code", insertable=false, updatable=false)
private Company company;
}
它有效 JDK17 但是当我将 jdk 版本更改为 11 时,它发生了关于
“由:org.hibernate.AnnotationException:引用 com.entity.Contract.company 的 referencedColumnNames(company_code) 未映射到单个属性”
块引用 块引用
答: 暂无答案
评论