Hibernate OneToManyProblem [关闭]

问题描述 投票:0回答:1

我想建立一对多关系,但我不能。我想在我的表之间创建一个关系。但是我看不到它们之间的关系。

为了建立正确的关系我需要做什么?

“ 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;
}
java mysql eclipse hibernate one-to-many
1个回答
0
投票

具有多对一关系的实体将有一列表示与另一实体的关系。如您的情况,@JoinColumn(name = "job_id")解释了jobs表和candidates表之间的关系。

如果同时查看两个表,您会发现job_id表中将有一个名为candidates的列。这表示多对一的关系,即候选人可以有一份工作候选人可以有相同或不同的工作

对于一对多关系,您无法在数据库中看到任何直接关系。考虑一下我之前解释的相反情况。一个工作可以由多个候选人来完成(例如,考虑踢足球作为一项工作,那么一个团队中将有11名球员)。这种关系是从休眠中派生而来的,而这种休眠是我们在上文中谈到的多对一关系。 Hibernate根据外键关系自行进行此映射。

© www.soinside.com 2019 - 2024. All rights reserved.