Mysql
 sql >> Base de données >  >> RDS >> Mysql

Hibernate - ManyToOne &Héritage / JOINED / mappedBy

Je ne pense pas que vous puissiez y parvenir en mappant le ManyToOne association à User génériquement dans UserActivity entité. C'est probablement trop déroutant pour le fournisseur JPA (Hibernate).

Au lieu de cela, je pense que vous devez mapper l'association sur User dans chaque de la Question , Answer et Comment entités. Oui, je sais que ce serait du code dupliqué, mais il semble que la seule façon de qualifier le OneToMany mappages dans User en utilisant le mappedBy référence.

Par exemple, votre Question l'entité aurait une association définie comme :

@ManyToOne(cascade = { MERGE, PERSIST }, fetch = LAZY)
@JoinColumn(name = "ua_user_id")
private User questionUser;

En fonction de l'intelligence (ou non) d'Hibernate sur l'association ci-dessus, vous devrez peut-être spécifier le table="USER_ACTIVITY" dans la JoinColumn annotation.

Puis le User aurait le OneToMany comme :

@OneToMany(mappedBy="questionUser", cascade = REMOVE)
private List<Question> questions = new ArrayList<>();

De même pour chacun des Answer et Comment .

Bien sûr, je n'ai pas essayé cela, donc je peux me tromper.