问题
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.
- How do we create Hibernate Mapping for this Employee Class?
- 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