【发布时间】:2017-06-26 08:18:55
【问题描述】:
考虑像项目和任务这样的一对多关联,其中一个项目可以有多个任务。如果这是在任务表中使用引用项目表主键的外键子句建模的,那么我们将 @JoinColumn 注释放在拥有方,即任务表,因为多方始终是拥有方。 但是,如果这是通过使用第三个表 project_task 映射的,则 @JoinTable 注释将用于反面,即项目实体上。但@JoinTable 应该始终在拥有方。
使用外键接近一:
@Entity
public class Project {
@OneToMany(mappedBy = "project")
private Collection<Task> tasks;
}
@Entity
public class Task {
@ManyToOne
@JoinColumn(name="PROJECT_ID")
private Project project;
}
使用第三个表和@JoinTable Annotation 方法二:
@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 时,拥有方转移到项目实体?
【问题讨论】:
标签: java hibernate jpa annotations