9
Tôi có bảng sau:JPA bản đồ cho cha-con với cùng một lớp
FOLDER[
id int,
name varchar2(10),
parent_folder_id int
]
Tôi muốn có lớp Folder để có mối quan hệ cha-con.
Tôi có bảng sau:JPA bản đồ cho cha-con với cùng một lớp
FOLDER[
id int,
name varchar2(10),
parent_folder_id int
]
Tôi muốn có lớp Folder để có mối quan hệ cha-con.
tôi tin rằng các bản đồ chính xác sẽ là:
@Entity
public class Folder {
@Id
@Column(name="PK_FOLDER")
private int id;
@Column(name="NAME")
private String name;
@ManyToOne
@JoinColumn(name="FK_PARENT_FOLDER")
public Folder parentFolder;
@OneToMany(mappedBy="parentFolder")
public List<Folder> subFolders = new ArrayList<Folder>();
}
Các @OneToOne
sẽ chỉ làm việc nếu mỗi phụ huynh có ít nhất một con, các mã trên làm việc đối với trường hợp tổng quát hơn, khi cha mẹ có thể có nhiều trẻ em . Ngoài ra, tôi bỏ qua các phương thức get/set vì mục đích đơn giản.
Điều này có vẻ khá tốt, ngoại trừ việc nó phải là một 'Set <>', không phải là một 'List <>'. –
Cả hai Bộ sưu tập đều tốt, Danh sách có thể được sử dụng để duy trì thứ tự chèn, một Bộ để thực thi tính duy nhất - nó thực sự phụ thuộc vào trường hợp cụ thể, vì cả hai đều hợp lệ và đặc tả không thực thi việc sử dụng cái kia. Trên thực tế, nhiều trình tạo mã để ánh xạ JPA mặc định sử dụng ArrayLists cho mối quan hệ @OneToMany. –
hi, Khi tôi cháy danh sách tất cả các truy vấn. Nó đi vào vòng lặp vô hạn. Bạn có thể hướng dẫn tôi không? –