出问题的是以下内容:
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name="idEmployees")
public List<Task> getTasks() {
return tasks;
}
这是错误的,原因有两个。
@JoinColumn(name="idEmployees")
表示:此OneToMany使用名为的连接列(即外键)进行映射idEmployees
。但是联接列未命名为idEmployees。idEmployees是Employee表的主键。连接列的名称为TasksIdEmployees
。输入正确的名称将使映射对于单向OneToMany关联正确。但是关联是双向的,这导致了第二个原因…
在双向关联中,没有必要(这是一个错误)在关联的两侧重复映射信息。一方(多方)必须是关联的所有者并定义映射。另一边必须是反面,只需说一下:去看另一边如何映射此关联。这是使用mapledBy属性完成的,该属性告诉Hibernate关联的另一端的字段或属性的名称:
@OneToMany(mappedBy = "employee")
public List<Task> getTasks() {
return tasks;
}
请注意,LAZY是toMany关联的默认设置,因此没有必要指定它。