sql >> Database teknologi >  >> RDS >> Mysql

Hibernate - ManyToOne &Inheritance / JOINED / mapdBy

Jeg tror ikke, du kan opnå dette ved at kortlægge ManyToOne tilknytning til User generisk i UserActivity enhed. Det er nok for forvirrende for JPA-udbyderen (Hibernate).

I stedet synes jeg, du skal kortlægge tilknytningen til User i hver af Question , Answer og Comment enheder. Ja, jeg ved, at det ville være duplikeret kode, men det ser ud til, at den eneste måde, du så vil være i stand til at kvalificere OneToMany kortlægninger i User ved hjælp af mappedBy reference.

For eksempel dit Question enhed ville have en tilknytning defineret som:

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

Afhængigt af hvor smart (eller ej) Hibernate er omkring ovenstående tilknytning, skal du muligvis angive table="USER_ACTIVITY" i JoinColumn anmærkning.

Derefter User ville have OneToMany som:

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

På samme måde for hver af Answer og Comment .

Jeg har selvfølgelig ikke prøvet dette, så jeg kan tage fejl.



  1. MySQL Vælg DISTINCT flere kolonner baseret på unikheden af ​​en række?

  2. Sådan viser du Unicode-data med PHP

  3. MariaDB CEIL() Forklaret

  4. Hvordan bruger man Timestamp_to_scn og Scn_to_timestamp i Oracle?