我试图了解 JPA-hibernate 在以下情况下的行为。
我有两个实体,部门和员工,它们具有一对多的关系。我正在尝试使用 JPA-Hibernate 来实现这一点。
这是我的部门实体:
@Entity
@Table(name="DEPARTMENT")
public class Department {
@Id
@GeneratedValue
@Column(name="DEPARTMENT_ID")
private Long departmentId;
@Column(name="DEPT_NAME")
private String departmentName;
@OneToMany(mappedBy="department")
private Set<Employee> employees;
}
这是我的员工实体:
@Entity
@Table(name="EMPLOYEE")
public class Employee {
@Id
@GeneratedValue
@Column(name="employee_id")
private Long employeeId;
@Column(name="firstname")
private String firstname;
@Column(name="lastname")
private String lastname;
@ManyToOne(fetch = FetchType.lazy)
@JoinColumn(name="department_id")
private Department department;
public Employee() {
}
public Employee(String firstname, String lastname, String phone) {
this.firstname = firstname;
this.lastname = lastname;
this.birthDate = new Date(System.currentTimeMillis());
this.cellphone = phone;
}
}
在获取员工时,我不想获取部门。所以我使用 FetchType.lazy。假设很少有员工与 2 个部门相关联,在这种情况下,当我获取员工时,我得到一个异常,即部门有多个记录。由于我使用 FetchType.lazy,我的假设是不应该提前获取部门,因此无论员工与 1 个部门或 2 个部门相关联,我都应该能够获取员工。
谁能帮我理解为什么我得到了例外?
谢谢。