[英]Hibernate One to many relationship
我在 hibernate 中尋找關系形成的不同可能性,我遇到了下面的代碼片段
@Entity
@Table(name="patient")
class Patient {
@OneToMany
@JoinColumn
private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();
}
@Entity
@Table(name="vehicle")
class Vehicle {
}
這里存在從患者到車輛的 1:n 關系。 我們在 Patient 類中添加了一個車輛集合。 到目前為止完美。 所以我的疑問是,如果我們在 Patient 類中添加 @JoinColumn 注釋,在車輛集合上方,我們會在“患者”表中獲得一列,該列指的是(vehicle_id)“車輛”表的主鍵。 因此,如果患者有多個車輛,那么患者表中將有 2 個具有相同患者 ID 的元組。 那么它會違反主鍵約束嗎? 如果您感到困惑,我將提供帶有一些示例數據的表格的屏幕截圖。 那么在Patient類中可以寫@JoinColumn注解嗎?
是的,您可以在 Patient 實體中添加 @JoinColumn,這將引用不在 Patient 類中但在 Vehicle 類中的列,例如 Vehicle 表:
| id | patient_id |
| 1 | 1 |
| 2 | 1 |
@Entity
@Table(name="patient")
class Patient {
@OneToMany
@JoinColumn(name="patient_id")
private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();
}
@Entity
@Table(name="vehicle")
class Vehicle {
@Column(name="patient_id")
private Integer patientId;
}
您也可以在患者類中使用@JoinTable
,就像這樣
@OneToMany
@JoinTable(
name = "vehicle",
joinColumns = @JoinColumn(name = "vehicle_id"),
inverseJoinColumns = @JoinColumn(name = "patient_id"))
private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();
如果在 @JoinTable 注釋中沒有提到inverseJoinColumns
,持久化提供者會假設一個主鍵到主鍵連接
但是根據屏幕截圖,您的患者表對我來說看起來有點奇怪,因為它看起來患者 ID 是重復的,而根據您的問題,應該是一名患者擁有多輛車
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.