Tôi muốn tồn tại công ty mẹ với 20 đơn vị con, mã của tôi là dướiJPA Persist cha mẹ và con với một đến nhiều mối quan hệ
Lớp Chánh
@OneToMany(mappedBy = "parentId")
private Collection<Child> childCollection;
Child Lớp
@JoinColumn(name = "parent_id", referencedColumnName = "parent_id")
@ManyToOne(optional=false)
private Parent parent;
String jsonString = "json string containing parent properties and child collection"
ObjectMapper mapper = new ObjectMapper();
Parent parent = mapper.readValue(jsonString, Parent.class);
public void save(Parent parent) {
Collection<Child> childCollection = new ArrayList<>() ;
for(Child tha : parent.getChildCollection()) {
tha.setParent(parent);
childCollection.add(tha);
}
parent.setChildCollection(childCollection);
getEntityManager().persist(parent);
}
Vì vậy, nếu có 20 bảng con thì tôi phải đặt tham chiếu cha mẹ ở mỗi trong số chúng cho rằng tôi phải viết 20 cho vòng lặp? Có khả thi không? là có cách nào khác hoặc cấu hình nơi tôi có thể tự động tồn tại cha mẹ và con?
Điều này dường như có nhiều câu hỏi về JSON hơn câu hỏi JPA. Nếu JSON của bạn không được sắp xếp sao cho các mối quan hệ thích hợp được thiết lập, thì việc giữ cho trẻ tiếp tục khi lưu cha mẹ chỉ đơn giản là việc thêm các tùy chọn xếp tầng liên quan vào @OneToMany (giả sử ánh xạ của bạn là chính xác) –
Nếu bạn không gửi con -> Quan hệ cha mẹ trở lại, hoặc nó không được thiết lập trong những gì được xây dựng từ JSON, sau đó có, bạn cần phải tự thiết lập nó trong mỗi thực thể con. Cách khác là làm cho mối quan hệ đơn hướng: loại bỏ mappedby = "parent" khỏi OneToMany và thay vào đó chỉ định một JoinColumn. Điều này sẽ làm cho OneToMany đặt khóa ngoài trong bảng con thay vì được đặt bởi tham chiếu của đứa con của nó (bạn nên loại bỏ thuộc tính cha mẹ và ánh xạ của con) – Chris