Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA Hibernate惰性抓取_Hibernate_Jpa - Fatal编程技术网

JPA Hibernate惰性抓取

JPA Hibernate惰性抓取,hibernate,jpa,Hibernate,Jpa,我试图理解JPA hibernate在以下情况下的行为 我有两个实体,部门和员工,他们之间有一对多的关系。我正试图使用JPA Hibernate实现这一点 这是我的部门实体: @Entity @Table(name="DEPARTMENT") public class Department { @Id @GeneratedValue @Column(name="DEPARTMENT_ID") private Long departmentId;

我试图理解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;
}
取员工时,我不想取部门。所以我使用FetchType.lazy。假设很少有员工与两个部门关联,在这种情况下,当我获取员工时,我会得到一个例外,即部门有多个记录。由于我使用FetchType.lazy,我的假设是不应该提前获取部门,因此无论员工是与1个部门还是2个部门关联,我都应该能够获取员工

有人能帮我理解为什么我会得到这个例外吗


谢谢。

你能发布你得到的异常的堆栈跟踪吗?你能发布Hibernate生成的SQL吗?一个员工如何与两个部门关联,因为其唯一的部门ID包含在其部门ID联接列中?这对我来说没什么意义。
@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;
    }

}