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.