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ć.