我想建立一对多关系,但我不能。我想在我的表之间创建一个关系。但是我看不到它们之间的关系。
为了建立正确的关系我需要做什么?
“ Hibernate根据外键关系自行进行此映射。”但我看不到外键。我看到的是job_id数据。
此代码已编译,但没有关系。怎么了 ?
@Entity
@Table(name = "jobs")
public class Job {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@Column(name = "title", length = 50)
private String title;
@NotEmpty
@Column(name = "description", length = 255)
private String description;
@NotEmpty
@Column(name = "last_application_date")
private Date lastApplicationDate;
@OneToMany(mappedBy = "job")
private Set<Candidate> candidates = new HashSet<Candidate>();
}
AND
@Entity
@Table(name = "candidates")
public class Candidate {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotEmpty
@Column(name = "first_name", length = 50)
private String firstName;
@NotEmpty
@Column(name = "last_name", length = 50)
private String lastName;
@ManyToOne
@JoinColumn(name = "job_id")
private Job job;
}
具有多对一关系的实体将有一列表示与另一实体的关系。如您的情况,@JoinColumn(name = "job_id")
解释了jobs
表和candidates
表之间的关系。
如果同时查看两个表,您会发现job_id
表中将有一个名为candidates
的列。这表示多对一的关系,即候选人可以有一份工作和候选人可以有相同或不同的工作。
对于一对多关系,您无法在数据库中看到任何直接关系。考虑一下我之前解释的相反情况。一个工作可以由多个候选人来完成(例如,考虑踢足球作为一项工作,那么一个团队中将有11名球员)。这种关系是从休眠中派生而来的,而这种休眠是我们在上文中谈到的多对一关系。 Hibernate根据外键关系自行进行此映射。