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;
急诊室看起来像这样。我想这就是你所期望的结果。
我有两个 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;
急诊室看起来像这样。我想这就是你所期望的结果。