Я создаю REST-сервис с пружиной с двумя сущностями: Parent
и Child
.У родителя много детей, а у ребенка один родитель.Я также установил cascade = CascadeType.ALL
, поэтому я звоню сохранить только для родителей.У меня есть конечная точка, которая принимает JSON в качестве входных данных.Json содержит Parent
и некоторые Child
, а затем я хочу сохранить его в базе данных.Проблема заключается в том, что мне нужно явно подключить Parent к Child, без него приложение хранит ноль в качестве внешнего ключа.
@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;
}
Есть ли (элегантный) способ избежать цикла for в setChildren
?