处理OneToMany关系时无法保存父ID

时间:2018-10-26 10:05:51

标签: spring-boot spring-data-jpa

在通过Spring JPA维护一对多关系时,我面临一些困难。我们有两个实体parent和child。我已经定义了这样的多对一关系

父实体

@OneToMany(cascade = CascadeType.ALL, mappedBy = parent)
Set<Child> childs;

子实体

@ManyToOne
@JoinColumn(name=""parent_id)
private Parent parent;

以下是我的服务中保存父项的代码。

Parent parent = new Parent();
parent.setName("name");
List<Child> children= new ArrayList<>();
Child child1 = new Child();
child1.setAge(10);
children.add(child1);
Child child2 = new Child();
child2.setAge(11);
children.add(child1);
parent.setChilds(children)
parentReposiroty.save(parent);

它将数据保存在两个表中,但在子表中,parent_id为null。请建议我在这里缺少什么。

1 个答案:

答案 0 :(得分:1)

在管理双向关系时,从父母一方进行保存时,还应该为每个孩子设置父母。因此,请参见下文,通过添加child1.setParent(parent);child2.setParent(parent);

来更新您的代码以为孩子设置父对象
Parent parent = new Parent();
parent.setName("name");
List<Child> children= new ArrayList<>();
Child child1 = new Child();
child1.setAge(10);

child1.setParent(parent);

children.add(child1);
Child child2 = new Child();
child2.setAge(11);

child2.setParent(parent);

children.add(child1);
parent.setChilds(children)
parentReposiroty.save(parent);