sql >> Databasteknik >  >> RDS >> Mysql

Hibernate - ManyToOne &Inheritance / JOINED / mapdBy

Jag tror inte att du kan uppnå detta genom att mappa ManyToOne koppling till User generellt i UserActivity entitet. Det är förmodligen för förvirrande för JPA-leverantören (Hibernate).

Istället tror jag att du måste mappa kopplingen till User i varje av Question , Answer och Comment enheter. Ja, jag vet att det skulle vara dubblerad kod, men det verkar som det enda sättet du då kommer att kunna kvalificera OneToMany mappningar i User med hjälp av mappedBy referens.

Till exempel din Question enheten skulle ha en association definierad som:

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

Beroende på hur smart (eller inte) Hibernate är med ovanstående koppling, kan du behöva ange table="USER_ACTIVITY" i JoinColumn anteckning.

Sedan User skulle ha OneToMany som:

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

Likadant för var och en av Answer och Comment .

Naturligtvis har jag inte provat detta, så jag kan ha fel.



  1. var kan jag hitta mysql.data.dll för c#

  2. MYSQL Konvertera tidsstämpel till månad

  3. PHP SQL Join Query sammanfogar innehåll i Multi-Array

  4. Skapa en PostgreSQL-sekvens till ett fält (som inte är postens ID)