Jeg tror ikke, du kan opnå dette ved at kortlægge ManyToOne tilknytning til User generisk i UserActivity enhed. Det er nok for forvirrende for JPA-udbyderen (Hibernate).
I stedet synes jeg, du skal kortlægge tilknytningen til User i hver af Question , Answer og Comment enheder. Ja, jeg ved, at det ville være duplikeret kode, men det ser ud til, at den eneste måde, du så vil være i stand til at kvalificere OneToMany kortlægninger i User ved hjælp af mappedBy reference.
For eksempel dit Question enhed ville have en tilknytning defineret som:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
Afhængigt af hvor smart (eller ej) Hibernate er omkring ovenstående tilknytning, skal du muligvis angive table="USER_ACTIVITY" i JoinColumn anmærkning.
Derefter User ville have OneToMany som:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
På samme måde for hver af Answer og Comment .
Jeg har selvfølgelig ikke prøvet dette, så jeg kan tage fejl.