java - Hibernate @OneToMany/@ManyToOne 列未出现

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

我有一个 @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/

相关文章:

java - XML 解析期间字母显示不正确

java - 在 Java/Android 中读取 XML 中的 unicode 字符

java - Hibernate ORing 两个标准

php - 如何在 Laravel 中按层次顺序显示一对多关系数据?

java - 使用 Objectify 和 RequestFactory 创建具有一对多关系的对象的合适方法是什么?

java - 方法实例化与类级实例化的 junit 测试

java - 将 Oracle 的行大小设置得更高会使我的应用程序变慢?

hibernate - 批量插入时,某一行出错时如何继续插入其他行

hibernate - struts2+hibernate java.lang.reflect.InvocationTargetException 异常

php - 是否可以在单个查询中将多对多关系与一对多关系组合起来?