gpt4 book ai didi

java - 带有外键的 EmbeddedId

转载 作者:搜寻专家 更新时间:2023-11-01 02:02:26 24 4
gpt4 key购买 nike

我正在尝试使用引用另一个表的复合主键。我看到了很多主题,但没有答案适用于我的情况。

在我的数据库中,列是由未添加 owner_id 的外键正确创建的。因此,即使员工不存在,我也可以添加新记录。我使用 SQLLite 作为数据库

甲类:

@Column(name = "filename", unique = true)
private String filename;

@EmbeddedId
private TimeSheetID id;


@MapsId("owner_id")
@JoinColumn(name = "owner_id", referencedColumnName = "employee_id")
@ManyToOne
private EmployeeeEntity employee;

B 类

public class TimeSheetID implements Serializable{

private static final long serialVersionUID = 7469844076039968866L;

@Column(nullable = false, name = "period")
private String period;

@Column(nullable = false, name = "owner_id")
private String ownerId;

// …

}

C级

@Column(nullable = false)
public String getName() {
return name;
}

@Id
@Column(name = "employee_id")
public String getEmployeeID() {
return employeeID;
}

@Column(nullable = false)
public String getBusinessUnit() {
return businessUnit;
}

最佳答案

你们很接近。

不要在 @MapsId 注释中使用列名,而应使用与该外键对应的类字段名:

@MapsId("ownerId")
@ManyToOne
private EmployeeeEntity employee;

此外,由于 @Column 已在 @Embeddable 中指定,您无需再次指定它。也不需要 referencedColumnName,因为您指向目标 id 字段,默认情况下由持久提供程序选择。

关于java - 带有外键的 EmbeddedId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com