在通过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。请建议我在这里缺少什么。
答案 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);