Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Hibernate - ManyToOne &Inheritance / JOINED / mapeado por


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.