我有一个 @OneToMany
/@ManyToOne
关系,其中 Project
可以有一个或多个 Phases
Phase
依赖于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
的链接表,有没有办法在不创建链接表的情况下保存阶段数组?
我不明白什么?
最佳答案
在@OneToMany注解中使用mappedBy属性
@OneToMany(targetEntity = PhaseEntity.class, mappedby="project")
private Set<PhaseEntity> phases = new HashSet<>(0);
关于java - Hibernate @OneToMany/@ManyToOne 列未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44384246/