Nie sądzę, że możesz to osiągnąć, mapując ManyToOne powiązanie z User ogólnie w UserActivity podmiot. To prawdopodobnie zbyt mylące dla dostawcy JPA (Hibernacja).
Zamiast tego myślę, że musisz zmapować powiązanie na User w każdym Question , Answer i Comment podmioty. Tak, wiem, że byłby to zduplikowany kod, ale wygląda na to, że jedyny sposób, w jaki będziesz mógł wtedy zakwalifikować OneToMany mapowania w User za pomocą mappedBy odniesienie.
Na przykład Twoje Question podmiot miałby powiązanie zdefiniowane jako:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
W zależności od tego, jak sprytny (lub nie) Hibernate dotyczy powyższego skojarzenia, może być konieczne określenie table="USER_ACTIVITY" w JoinColumn adnotacja.
Następnie User miałby OneToMany jako:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Podobnie dla każdego z Answer i Comment .
Oczywiście nie próbowałem tego, więc mogę się mylić.