JPA-Hibernate Lazy Fetching

时间:2013-08-09 22:37:54

标签: hibernate jpa

我试图在下面的情况下理解JPA-hibernate的行为。

我有两个实体,Department和Employee有1对多的关系。我试图使用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个部门相关联,我都应该能够获取员工。

任何人都可以帮助我理解为什么我会得到例外吗?

感谢。

0 个答案:

没有答案