首页 > 解决方案 > 如何在 Spring Boot 中正确映射 OneToMany 关系?

问题描述

你好我正在做一个 Spring Boot 项目,我有点困惑。我有一个Product实体和一个Property实体,它们看起来像这样:

public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long id;

    @Column
    private String name;

    @OneToMany(cascade = CascadeType.ALL)
    private List<Property> properties;
//getters and setters omitted
}
public class Property {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Long id;

    @Column
    private String name;

    @Column
    private String value;
//getters and setters omitted
}

现在我想知道是否还需要在 Propery 实体中指定一个 ManyToOne 关系,或者这是否足够好?在我过去的项目中,我尝试在两个实体(biredctional)中使用关系,结果一团糟,因为我在尝试从前端检索数据时经常陷入数据的“无限循环”。我只需要一个单向且简单的关系,其中一个产品可以有多个属性,然后我可以使用 getProperties() 方法检索数据。我是不是理解错了,还是我的代码对我想要做的事情足够好?

标签: javaspringhibernate

解决方案


如果你有一个单向的@OneToMany 关联,这意味着你只能从外键所在的父端访问关系。更多细节在这里

双向关联应始终在两侧更新,因此父端应包含 addChild 和 removeChild 组合。这些方法确保我们始终同步关联的双方,以避免对象或关系数据损坏问题。


推荐阅读