gpt4 book ai didi

java - 如何在 spring boot jpa 中使用外部 id 作为主要 id?

转载 作者:行者123 更新时间:2023-11-29 01:19:45 25 4
gpt4 key购买 nike

有没有办法在不使用 Embeddable 或 Id 类的情况下使用另一个实体的主键作为主键。例如:

@Table(name = "employee")
@Entity
public class Employee implements Serializable {

@Id
@JoinColumn(name = "person_id")
private Person person;

这里Person是另一个实体,person_id是主键。提前致谢

最佳答案

是的,如果这是构建 PK 的唯一参数,您可以这样做

public class Employee implements Serializable {

@Id
@Column(name="person_id")
private Long personId;

@JoinColumn(name = "person_id")
private Person person;

但如果是这种情况就没有用了,如果Employee有相同的主键那么他们应该在同一个表中,不需要将它们分开在2个表中。

如果我们正在处理包含人的复合主键,那么我们需要创建一个可嵌入的键:

@Embeddable
public class CompositeKey{

@Column(name="person_id")
private Long personId;
... // other attributes
}

public class Employee implements Serializable {

@EmbeddedId CompositeKey employeeId;

@JoinColumn(name = "person_id")
private Person person;

另一个注意,你的关系注释在哪里,你应该在你的 person 引用上有 OneToOne 注释:

@OneToOne
@JoinColumn(name = "person_id")
private Person person;

关于java - 如何在 spring boot jpa 中使用外部 id 作为主要 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865461/

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