在hibernate中创建外键映射

时间:2014-07-27 23:57:25

标签: java mysql hibernate

我有两个表部门和员工,一个部门可以有很多员工。

如果我必须通过将departmentId作为外键来使用hibernate对数据库中的employee表进行建模,我有两个选项可用。

a)我可以在Department类

中创建一个列表

b)在Employee类的referencedColumnName ='departmentId'上使用@ManyToOne和@JoinColumn。

建议使用哪种方法?或者这两种方法是否用于完全不同的问题?

1 个答案:

答案 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