Looking for jpa Answers? Try Ask4KnowledgeBase
Looking for jpa Keywords? Try Ask4Keywords

jpaMapping da molti a molti


introduzione

Una mappatura ManyToMany descrive una relazione tra entità in cui entrambe possono essere correlate a più istanze l'una dell'altra ed è definita @ManyToMany .

A differenza di @OneToMany cui è possibile utilizzare una colonna di chiave esterna nella tabella dell'entità, ManyToMany richiede una tabella di join, che associa le entità l'una all'altra.

Parametri

Annotazione Scopo
@TableGenerator Definisce un generatore di chiavi primarie a cui è possibile fare riferimento per nome quando viene specificato un elemento generatore per l'annotazione GeneratedValue
@GeneratedValue Fornisce la specifica delle strategie di generazione per i valori delle chiavi primarie. Può essere applicato a una proprietà o campo chiave primaria di un'entità o superclasse mappata insieme all'annotazione Id.
@ManyToMany Specifica la relazione tra Employee e entità del progetto in modo tale che molti dipendenti possano lavorare su più progetti.
mappedBy="projects" Definisce una relazione bidirezionale tra Impiegato e Progetto
@JoinColumn Specifica il nome della colonna che farà riferimento all'entità da considerare come proprietario dell'associazione
@JoinTable Specifica la tabella nel database che manterrà dipendente per proiettare le relazioni utilizzando chiavi esterne

Osservazioni

  • @TableGenerator e @GeneratedValue vengono utilizzati per la creazione automatica dell'ID utilizzando il generatore di tabelle jpa.
  • @ManyToMany annotation specifica la relazione tra Employee e Project entities.
  • @JoinTable specifica il nome della tabella da utilizzare come tabella di join jpa da molti a molti tra Employee e Project usando name = "employee_project". Ciò avviene perché non è possibile determinare la proprietà di un mapping jpa molti a molti poiché le tabelle del database non contengono chiavi esterne per fare riferimento ad altre tabelle.
  • @JoinColumn specifica il nome della colonna che farà riferimento all'entità da considerare come proprietario dell'associazione mentre @inverseJoinColumn specifica il nome del lato inverso della relazione. (Puoi scegliere qualsiasi lato per essere considerato come proprietario. Assicurati solo che quei lati siano in relazione). Nel nostro caso abbiamo scelto Employee come proprietario in modo che @JoinColumn faccia riferimento alla colonna idemployee nella tabella join employee_project e @InverseJoinColumn fa riferimento a idproject che è il lato inverso di jpa molti a molti mapping.
  • @ManyToMany annotation nell'entità Project mostra una relazione inversa, quindi utilizza mappedBy = projects per fare riferimento al campo nell'entità Employee.

L'esempio completo può essere riferito qui

Mapping da molti a molti Esempi correlati