我有两个表部门和员工,一个部门可以有很多员工。
如果我必须通过将departmentId作为外键来使用hibernate对数据库中的employee表进行建模,我有两个选项可用。
a)我可以在Department类
中创建一个列表b)在Employee类的referencedColumnName ='departmentId'上使用@ManyToOne和@JoinColumn。
建议使用哪种方法?或者这两种方法是否用于完全不同的问题?
答案 0 :(得分:3)
首先,这里有两个实体部门和员工。
其次,我们必须了解ManyToOne
在这里的含义,正如您所说,许多员工可以在一个部门中。
映射就好了,请注意这只是一个片段:
@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
@JoinColumn(name="department_id")
private Department department;
// Getter and Setter methods
}
@Entity
@Table(name="DEPARTMENT")
public class Department {
@Id
@GeneratedValue
@Column(name="department_id")
private Long departmentId;
@Column(name="department_name")
private String departmentName;
@OneToMany(mappedBy="department")
private Set<Employee> employees;
// Getter and Setter methods
}
由于此处存在bi-directional
关系,因此一方将成为此关系的所有者。
注释@JoinColumn
表示该实体是关系的所有者。也就是说,相应的表具有一个列,该列具有引用表的外键,而属性mappedBy
表示该方中的实体是该关系的反转,并且所有者驻留在&#34;其他&#34;实体。
有关mapppedby
可以找到的内容的更多信息here。