Looking for jpa Keywords? Try Ask4Keywords

jpaViele zu viele Karten


Einführung

Ein ManyToMany Mapping beschreibt eine Beziehung zwischen Entitäten, bei denen beide mehr als eine Instanz voneinander betreffen können, und wird durch die Annotation @ManyToMany definiert.

Im Gegensatz zu @OneToMany wo eine Fremdschlüsselspalte in der Entitätstabelle verwendet werden kann, benötigt ManyToMany eine Join-Tabelle, die die Entitäten einander zuordnet.

Parameter

Anmerkung Zweck
@TableGenerator Definiert einen Primärschlüsselgenerator, auf den anhand des Namens verwiesen werden kann, wenn ein Generatorelement für die GeneratedValue Annotation angegeben wird
@GeneratedValue Ermöglicht die Angabe von Generierungsstrategien für die Werte von Primärschlüsseln. Sie kann in Verbindung mit der Id-Annotation auf eine Primärschlüsseleigenschaft oder ein Feld einer Entität oder einer zugeordneten Superklasse angewendet werden.
@ManyToMany Gibt die Beziehung zwischen Employee- und Project-Entitäten an, sodass viele Mitarbeiter an mehreren Projekten arbeiten können.
mappedBy="projects" Definiert eine bidirektionale Beziehung zwischen Mitarbeiter und Projekt
@JoinColumn Gibt den Namen der Spalte an, die sich auf die Entität bezieht, die als Eigentümer der Zuordnung betrachtet wird
@JoinTable Gibt die Tabelle in der Datenbank an, in der Mitarbeiter mithilfe von Fremdschlüsseln projektiert werden

Bemerkungen

  • @TableGenerator und @GeneratedValue werden für die automatische ID-Erstellung mit dem jpa-Tabellengenerator verwendet.
  • Die Annotation @ManyToMany gibt die Beziehung zwischen Entitäten Employee und Project an.
  • @JoinTable gibt den Namen der Tabelle an, die als Join-Tabelle verwendet werden soll. Viele Zuordnungen zwischen Employee und Project mit name = "employee_project". Dies geschieht, da es keine Möglichkeit gibt, den Besitz einer Jpa-Many-To-Mapping-Zuordnung zu bestimmen, da die Datenbanktabellen keine Fremdschlüssel enthalten, die auf andere Tabellen verweisen.
  • @JoinColumn gibt den Namen der Spalte an, die sich auf die Entität bezieht, die als Eigentümer der Zuordnung betrachtet wird, während @inverseJoinColumn den Namen der inversen Seite der Beziehung angibt. (Sie können eine beliebige Seite als Eigentümer auswählen. Stellen Sie nur sicher, dass diese Seiten in Beziehung stehen). In unserem Fall haben wir Employee als Eigentümer ausgewählt, sodass @JoinColumn auf die idemployee-Spalte in der join-Tabelle employee_project und @InverseJoinColumn auf idproject verweist, das eine inverse Seite von jpa viele in viele darstellt.
  • Die @ManyToMany-Annotation in der Projektentität zeigt eine umgekehrte Beziehung. Daher verwendet sie mappedBy = -Projekte, um auf das Feld in der Mitarbeiterentität zu verweisen.

Ein vollständiges Beispiel kann hier herangezogen werden

Viele zu viele Karten Verwandte Beispiele