如何为自引用表创建Hibernate映射

时间:2015-04-30 19:05:12

标签: hibernate self-referencing-table

我被问到如何为表中引用表的主键的列创建hibernate映射。

例如,Employee表将EMP_ID作为主键,并且还具有MGR_ID列以了解员工的经理。由于经理也是员工,它将在同一个表中。因此,每个Employee行都有一个经理Id,它也是一个雇员。

  1. 我们如何为此Employee类创建Hibernate映射?
  2. Employee类怎么样?它是否只有一个管理器ID,或者它将包含另一个Employee Object作为成员变量。
  3. 请帮助我解决这种情况。谢谢。

1 个答案:

答案 0 :(得分:8)

您可以在manager课程中引用Employee

该实体如下所示:

@Entity
@Table(name="EMPLOYEE")
public class Employee {

    @Id
    @Column(name="EMPLOYEE_ID")
    @GeneratedValue
    private Long employeeId;

    @Column(name="FIRSTNAME")
    private String firstname;

    @Column(name="LASTNAME")
    private String lastname;

    @ManyToOne(cascade={CascadeType.ALL})
    @JoinColumn(name="manager_id")
    private Employee manager;

    @OneToMany(mappedBy="manager")
    private Set<employee> subordinates = new HashSet<employee>();

    public Employee() {
    }

    public Employee(String firstname, String lastname) {
        this.firstname = firstname;
        this.lastname = lastname;
    }

    // Getter and Setter methods
}

请参阅此链接以获取完整示例:

Hibernate Self Join Annotations One To Many mapping example