Mysql
 sql >> Database >  >> RDS >> Mysql

Ibernazione - ManyToOne &Ereditarietà / JOINED / mappedBy

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.