在休眠中创建外键映射

wor*_*ing 3 java mysql hibernate

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

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

a) 我可以在 Department 类中创建一个列表

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

推荐哪种方法?或者这两种方法用于完全不同的问题?

San*_*p B 5

首先,这里有两个实体部门和员工。其次,我们必须了解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
Run Code Online (Sandbox Code Playgroud)

}

@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
Run Code Online (Sandbox Code Playgroud)

}

由于bi-directional此处存在关系,因此一方将是此处关系的所有者。注释@JoinColumn表明该实体是关系的所有者。也就是说,对应的表有一个列有被引用表的外键,而属性mappedBy表示这一侧的实体是关系的逆,所有者驻留在“其他”实体中。

mapppedby可以在这里找到更多关于做什么的信息