Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hibernate - ManyToOne &Vererbung / JOINED / mappedBy

Ich glaube nicht, dass Sie dies erreichen können, indem Sie ManyToOne zuordnen Zuordnung zu User generisch in der UserActivity Einheit. Das ist wahrscheinlich zu verwirrend für den JPA-Anbieter (Hibernate).

Stattdessen denke ich, dass Sie die Zuordnung User zuordnen müssen in jedem der Question , Answer und Comment Entitäten. Ja, ich weiß, das wäre doppelter Code, aber es sieht so aus, als ob Sie dann nur so in der Lage sein werden, den OneToMany zu qualifizieren Zuordnungen in User mit mappedBy Referenz.

Zum Beispiel Ihre Question Entität hätte eine Assoziation, die wie folgt definiert ist:

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

Je nachdem, wie schlau (oder nicht) Hibernate mit der obigen Assoziation umgeht, müssen Sie möglicherweise die table="USER_ACTIVITY" angeben in der JoinColumn Anmerkung.

Dann der User hätte das OneToMany als:

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

Ähnlich für jede Answer und Comment .

Natürlich habe ich das nicht ausprobiert, also könnte ich mich irren.