Một câu hỏi Hibernate ...: PHibernate nhiều-nhiều gắn với cùng một thực thể
Sử dụng khuôn khổ Chú thích Hibernate, tôi có một thực thể User
. Mỗi User
có thể có một bộ sưu tập của bạn bè: một Bộ sưu tập khác của User
s. Tuy nhiên, tôi đã không thể tìm ra cách để tạo ra một liên kết nhiều-nhiều trong lớp User
bao gồm một danh sách các User
s (sử dụng một bảng trung gian của người dùng-bạn bè).
Đây là lớp người dùng và chú thích của nó:
@Entity
@Table(name="tbl_users")
public class User {
@Id
@GeneratedValue
@Column(name="uid")
private Integer uid;
...
@ManyToMany(
cascade={CascadeType.PERSIST, CascadeType.MERGE},
targetEntity=org.beans.User.class
)
@JoinTable(
name="tbl_friends",
[email protected](name="personId"),
[email protected](name="friendId")
)
private List<User> friends;
}
Người dùng-friend bảng vẽ bản đồ chỉ có hai cột, cả hai đều là các phím nước ngoài cho uid
cột của bảng tbl_users
. Hai cột là personId
(nên ánh xạ tới người dùng hiện tại) và friendId
(chỉ định id của người bạn của người dùng hiện tại).
Vấn đề là trường "bạn bè" tiếp tục bị vô hiệu, mặc dù tôi đã điền trước bảng bạn bè sao cho tất cả người dùng trong hệ thống là bạn bè với tất cả người dùng khác. Tôi thậm chí đã cố gắng chuyển đổi các mối quan hệ để @OneToMany
, và nó vẫn đi ra null (mặc dù đầu ra gỡ lỗi Hibernate cho thấy một truy vấn SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?
, nhưng không có gì khác).
Bất kỳ ý tưởng nào về cách điền danh sách này? Cảm ơn bạn!
Tôi đã hy vọng bạn 'd đến để giải cứu của tôi cho lần thứ ba :) Nó làm việc hoàn hảo, và lời giải thích của bạn xóa lên sự hiểu biết của tôi về ER đáng kể. Cảm ơn bạn rất nhiều lần nữa! :) – Magsol
Tôi có thể kết hợp bạn bè và bạn bè không? Và nếu không, hơn tôi cần giúp đỡ với jsonmanagedreference và jsonbackreference trong một thực thể trong câu hỏi này: http://stackoverflow.com/questions/24563066/hibernate-user-and-friends-jsonreference – dikkini
Tôi đang sử dụng Hibernate 5 và một bộ sưu tập là đủ - bằng cách sử dụng hai tạo hàng trùng lặp trong tbl_friends. – mdziob