Tôi không nghĩ rằng bạn có thể đạt được điều này bằng cách ánh xạ ManyToOne
liên kết với User
nói chung trong UserActivity
thực thể. Điều đó có lẽ quá khó hiểu đối với nhà cung cấp JPA (Hibernate).
Thay vào đó, tôi nghĩ bạn cần ánh xạ liên kết tới User
trong mỗi của Question
, Answer
và Comment
các thực thể. Có, tôi biết đó sẽ là mã trùng lặp, nhưng có vẻ như cách duy nhất để bạn có thể đủ điều kiện tham gia OneToMany
ánh xạ trong User
sử dụng mappedBy
tham khảo.
Ví dụ:Question
của bạn thực thể sẽ có một liên kết được định nghĩa là:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
Tùy thuộc vào mức độ thông minh (hay không) của Hibernate về liên kết trên, bạn có thể cần chỉ định table="USER_ACTIVITY"
trong JoinColumn
chú thích.
Sau đó, User
sẽ có OneToMany là:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Tương tự cho mỗi Answer
và Comment
.
Tất nhiên, tôi chưa thử điều này, vì vậy tôi có thể sai.