0
我得有一個雙向一個一對多的關係的兩個實體:一個一對多的雙向映射和持久性秩序的問題
@ManyToOne
@JoinColumn(name = "department_id")
public Department getDepartment() {
return department;
}
@OneToMany(mappedBy="department")
public Collection<EmployeeMapping> getEmployees() {
return employees;
}
這裏是我的單元測試:
Department object = new Department();
object.setName("Test Department Object");
assertEquals("Object ID is not persistent yet", 0L, object.getId());
EmployeeMapping employee1 = new EmployeeMapping();
employee1.setName("Employee 1");
EmployeeMapping employee2 = new EmployeeMapping();
employee2.setName("Employee 2");
Collection<EmployeeMapping> collection = ImmutableSet.of(employee1, employee2);
object.setEmployees(collection);
departmentDao.save(object);
assertNotEquals("Object ID is persistent", 0L, object.getId());
Department actualObject = departmentDao.get(object.getId());
assertEquals("The actual object in the database must be equal to the original value", object, actualObject);
員工1和員工2未保存。測試執行後,它們不在表中。實際對象 - Departme類型 - 確實存在。
我的問題是爲什麼當我得到一個部署使用:departmentDao.get(object.getId());
actualObject
有一個僱員的集合,雖然他們不能從表中卸載。他們沒有得救。也許departmentDao使用裏面的緩存。我不確定,請解釋一下。
無論如何,我想這樣object
和actualObject
將在這個測試不相等。我如何存檔它?我希望只有當我挽救兩名員工時,他們纔是平等的。
而最後一個問題,實體保存的順序。員工和部門之間都有鏈接。這是一種雙向關係。我應該首先保存一個部門,只有員工或訂單無關緊要?你能爲我解釋一下嗎? 謝謝。
最後一個問題。 actualObject不包含空的collecton。我無法理解爲什麼。 – Alexandr