How to create Hibernate Mapping for a self referencing table

早过忘川 提交于 2019-12-07 03:09:37

问题


I was asked how I would create a hibernate mapping for a column in a table that refers to the primary key of the table.

For example, an Employee table has EMP_ID as primary key and it also has MGR_ID column to know the manager of the employee. As a manager is also an Employee, it would be in the same table. Hence every Employee row has a manager Id which is also an employee.

  1. How do we create Hibernate Mapping for this Employee Class?
  2. How would the Employee class look like? Does it have just a manager Id in it or it will contain another Employee Object as a member variable.

Kindly help me with this kind of scenario. Thank you.


回答1:


You can have a reference to the manager in your Employee class.

The entity looks like this:

@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
}

Refer to this link for complete example:

Hibernate Self Join Annotations One To Many mapping example



来源:https://stackoverflow.com/questions/29975751/how-to-create-hibernate-mapping-for-a-self-referencing-table

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!