sql >> Base de Datos >  >> RDS >> Mysql

Hibernate - ManyToOne &Herencia / JOINED / mappedBy

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.