Jag tror inte att du kan uppnå detta genom att mappa ManyToOne
koppling till User
generellt i UserActivity
entitet. Det är förmodligen för förvirrande för JPA-leverantören (Hibernate).
Istället tror jag att du måste mappa kopplingen till User
i varje av Question
, Answer
och Comment
enheter. Ja, jag vet att det skulle vara dubblerad kod, men det verkar som det enda sättet du då kommer att kunna kvalificera OneToMany
mappningar i User
med hjälp av mappedBy
referens.
Till exempel din Question
enheten skulle ha en association definierad som:
@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;
Beroende på hur smart (eller inte) Hibernate är med ovanstående koppling, kan du behöva ange table="USER_ACTIVITY"
i JoinColumn
anteckning.
Sedan User
skulle ha OneToMany som:
@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();
Likadant för var och en av Answer
och Comment
.
Naturligtvis har jag inte provat detta, så jag kan ha fel.