我在Employee和Department之间有一对多的关系,我的班级看起来像:
@Entity
public class Employee {
@Id
private int empId;
private String empName;
@OneToMany
@JoinTable (name = "relationalTable" , joinColumns = @JoinColumn(name = "empId"),inverseJoinColumns=@JoinColumn(name = "deptId"))
private Collection <Department> dept = new ArrayList<Department>();
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public Collection<Department> getDept() {
return dept;
}
public void setDept(Collection<Department> dept) {
this.dept = dept;
}
@Column
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}
和我的系类一样:
@Entity
public class Department {
int deptId;
String deptName;
private Employee emp;
@ManyToOne
public Employee getEmp() {
return emp;
}
public void setEmp(Employee emp) {
this.emp = emp;
}
@Id
public int getDeptId() {
return deptId;
}
public void setDeptId(int deptId) {
this.deptId = deptId;
}
@Column
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
}
如果我拿到部门。因此,它将在与其相关联的同时获取所有员工。用部门ID 1说有1000名员工。 那么有多少查询会在此时执行到数据库以获取所有数据?
答案 0 :(得分:0)
如果fetchType为Lazy Hibernate,则在您尝试访问部门时检索记录
如果它急切的Hibernate将所有查询加入一个查询并执行一个查询。
答案 1 :(得分:0)
如果尚未指定fetch类型,则默认加载一对多关系。所以你的Employee类有一个到多个部门。
所以,如果你加载了1000名员工,那么将有1000个加载部门的电话(每个员工有1个电话)。
我无法理解你的关系,在这个组织中,一个部门只能有一个员工,但一个员工可以在几个奇怪的部门工作。