Spring Boot Jpa 使用电子邮件作为外键

Springboot Jpa using email as a foreignKey

我有两个 table。其中一位所有者和另一位所有者是 Bill。在两个 table 中,我都有电子邮件列。所以我想使用电子邮件作为外键。但所有者 ıd ıs 自动成为外键。我该怎么做?

这张是账单面的

 @Id
private Long id;
private static final Integer LIMIT=200;
private String firstName;
private String lastName;
private String email;
private Integer amount;
private String productName;
@ManyToOne
@JoinColumn(name = "email")
private PurchasingSpecialist owner;

而这个是所有者方

@Id
private Long Id;
private String firstName;
private String lastName;
private String email;

@OneToMany(
        cascade = CascadeType.ALL
)
@JoinColumn(name = "email",referencedColumnName = "email")
private List<Bill> bills;

但仍会自动创建 owner_id 列

首先您要做的是从 PurchasingSpecialist 实体中删除 Long id 属性。并将 @Id 添加到电子邮件列。然后它将看起来像这样。然后 JPA 将创建电子邮件列作为实体的主键。

@Id
@Column(length = 200)
private String email;
private String firstName;
private String lastName;  
@OneToMany(
        cascade = CascadeType.ALL
)
@JoinColumn(name = "email",referencedColumnName = "email")
private List<Bill> bills;

下一步是将 email 主键添加到账单实体。 使用 @JoinColumn(name = "email",referencedColumnName = "email") 时,它将在 Bill 实体中创建一个“电子邮件”列。因此,bill实体中的private String email;应该去掉。您的 Bill 实体将如下所示。

@Id
private Long id;
private static final Integer LIMIT=200;
private String firstName;
private String lastName;
private Integer amount;
private String productName;
@ManyToOne
@JoinColumn(name = "email")
private PurchasingSpecialist owner;

急诊室看起来像这样。我想这就是你所期望的结果。