我正在使用带有两个实体的弹簧创建REST服务:Parent
和Child
。父母有很多孩子,孩子有一位父母。我还设置了cascade = CascadeType.ALL
,所以我只调用父项的save。我有将json作为输入的终点。 Json包含Parent
和一些Child
,然后我要将其存储到数据库中。问题是我需要显式地将Parent链接到Child,否则应用程序会将null存储为外键。
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Parent {
@Id
@GeneratedValue
Long id;
@NotEmpty
@OneToMany(mappedBy="parent", cascade=CascadeType.ALL, fetch = FetchType.EAGER)
Set<Child> children;
public void setChildren(Set<Child> children) {
for(Child child : children){
child.setParent(this);
}
this.children = children;
}
}
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Product {
@Id
@GeneratedValue
Long id;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
Parent parent;
}
有什么(优雅的)方法可以避免setChildren
中的for循环?