Hibernate @OneToMany / @ManyToOne列没有出现

时间:2017-06-06 07:49:26

标签: java hibernate one-to-many many-to-one

我有一个@OneToMany / @ManyToOne关系,Project可以有一个或多个PhasesPhase取决于Project }。很简单。

以下是我的实体(相关部分):

@Entity
@Table(name = "project")
public class ProjectEntity {

    @Id
    @Column(name = "project_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    // Our Set of phases to be saved in the database as an array 
    @OneToMany(targetEntity = PhaseEntity.class)
    private Set<PhaseEntity> phases = new HashSet<>(0);

    // Getters and setters
}

我的PhaseEntity

@Entity
@Table(name = "phase")
public class PhaseEntity {
    @Id
    @Column(unique = true, name="phase_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    // Our project on which the phases are appart of   
    @NotNull
    @ManyToOne(targetEntity = ProjectEntity.class)
    private ProjectEntity project;

    // Getters and setters
}

在已经存在的项目中创建阶段后,我通过创建实体和

逐个保存它们
phaseDao.save(phaseEntity);

最后在我的项目中保存一组阶段,如:

project.setPhases(phaseSet);

我的阶段已正确创建并链接到项目,但我的项目没有显示任何阶段的迹象,因为他们没有phases列。

编辑:事实证明Hibernate创建了一个名为project_phases的链接表,有没有办法在不创建链接表的情况下保存一组阶段?

我不理解什么?

1 个答案:

答案 0 :(得分:2)

在@OneToMany Annotation中使用mappedBy属性

@OneToMany(targetEntity = PhaseEntity.class, mappedby="project")
private Set<PhaseEntity> phases = new HashSet<>(0);