Non credo che tu possa ottenere questo risultato mappando il ManyToOne
associazione a User
genericamente in UserActivity
entità. Probabilmente è troppo confuso per il provider JPA (ibernazione).
Invece, penso che tu debba mappare l'associazione a User
in ciascuno della Question
, Answer
e Comment
entità. Sì, so che sarebbe un codice duplicato, ma sembra che l'unico modo in cui potrai qualificare il OneToMany
mappature in User
utilizzando mappedBy
riferimento.
Ad esempio, la tua Question
l'entità avrebbe un'associazione definita come:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
A seconda di quanto sia intelligente (o meno) Hibernate riguardo all'associazione di cui sopra, potrebbe essere necessario specificare la table="USER_ACTIVITY"
nella JoinColumn
annotazione.
Quindi il User
avrebbe OneToMany come:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Allo stesso modo per ciascuna di Answer
e Comment
.
Ovviamente non l'ho provato, quindi potrei sbagliarmi.