No creo que puedas lograr esto mapeando el ManyToOne
asociación a User
genéricamente en el UserActivity
entidad. Probablemente sea demasiado confuso para el proveedor de JPA (Hibernate).
En su lugar, creo que debe asignar la asociación a User
en cada de la Question
, Answer
y Comment
entidades. Sí, sé que sería un código duplicado, pero parece que la única forma en que podrá calificar el OneToMany
asignaciones en User
usando el mappedBy
referencia.
Por ejemplo, su Question
entidad tendría una asociación definida como:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
Dependiendo de cuán inteligente (o no) sea Hibernate sobre la asociación anterior, es posible que deba especificar la table="USER_ACTIVITY"
en JoinColumn
anotación.
Luego el User
tendría el OneToMany como:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Del mismo modo para cada uno de Answer
y Comment
.
Por supuesto, no he probado esto, por lo que podría estar equivocado.