考慮一個像項目和任務的一對多關聯,其中一個項目可以有多個任務。如果這是使用引用項目表主鍵的任務表中的外鍵子句建模的,那麼我們將@JoinColumn註釋放在擁有的一面,即任務表中,因爲許多方面始終是擁有方。 但是,如果通過使用第三個表project_task映射它,@JoinTable註釋正在反面使用,即在項目實體上。但是@JoinTable應該總是在自己的一面。爲什麼@JoinTable註釋總是與@OneToMany註釋一起出現
方法用一個外鍵:
@Entity
public class Project {
@OneToMany(mappedBy = "project")
private Collection<Task> tasks;
}
@Entity
public class Task {
@ManyToOne
@JoinColumn(name="PROJECT_ID")
private Project project;
}
方法有兩個與第三個表和@JoinTable註釋:
@Entity
public class Project {
@JoinTable(name = "MY_JT",
joinColumns = @JoinColumn(
name = "PROJECT_ID",
),
inverseJoinColumns = @JoinColumn(
name = "TASK_ID"
)
@OneToMany
private List<Task> tasks;
}
@Entity
public class Task {
private Project project;
}
爲什麼使用@JoinTable當擁有方向項目實體?