Eu não acho que você pode conseguir isso mapeando o
ManyToOne
associação a User
genericamente na UserActivity
entidade. Isso provavelmente é muito confuso para o provedor JPA (Hibernate). Em vez disso, acho que você precisa mapear a associação para
User
em cada da Question
, Answer
e Comment
entidades. Sim, eu sei que seria um código duplicado, mas parece que a única maneira de qualificar o OneToMany
mapeamentos em User
usando o mappedBy
referência. Por exemplo, sua
Question
entidade teria uma associação definida como:@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
Dependendo de quão inteligente (ou não) o Hibernate é sobre a associação acima, você pode precisar especificar o
table="USER_ACTIVITY"
na JoinColumn
anotação. Em seguida, o
User
teria o OneToMany como:@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Da mesma forma para cada
Answer
e Comment
. Claro, eu não tentei isso, então posso estar errado.