的映射如下(爲示出映射的圖像的鏈接,還提供):如何顯示2個不同的類型2個的實體類之間的映射的,保持彼此的基準的2個表(Department和Employee)之間
- 每個部門都有一個且只有一個部門負責人。
- 每個部門可以有多個員工。
- dept_id和empId是它們各自表的主鍵。
- dept_head(它是員工ID)和部門是其各自表 的外鍵。
Mapping Employee and Department table
我創建實體類爲上述2個表(該結構在下文提供)。
Employee類:
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "empId")
private Integer empId;
@Size(max = 45)
@Column(name = "name")
private String name;
@Size(max = 45)
@Column(name = "address")
private String address;
@Size(max = 45)
@Column(name = "grade")
private String grade;
@Size(max = 45)
@Column(name = "email")
private String email;
@JoinColumn(name = "dept", referencedColumnName = "dept_id")
@ManyToOne
private Department deptartment;
.. ...
}
系類:
public class Department implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 8)
@Column(name = "dept_id")
private String deptId;
@Size(max = 45)
@Column(name = "name")
private String name;
@JoinColumn(name = "dept_head", referencedColumnName = "empId")
@OneToOne
private Employee deptHead;
@OneToMany(mappedBy = "deptartment")
private List<Employee> employeeList;
....
...
}
如果我在Employee類添加的mappedBy(就像我在部門所做的那樣),以示EMPID之間OneToOne映射和deptHead,代碼正在編譯和運行。但是,如果我不在Employee類中添加mappedBy語句,如上面的代碼所示,代碼仍然編譯並運行良好。
我想知道爲什麼上面的代碼工作,即使我不提供僱員類的mappedBy。
如果有人能夠幫助我清除上述疑惑,並解釋其工作背後的邏輯將是偉大的,因爲我是新手。