Suche…


Parameter

Anmerkung Zweck
@TableGenerator Gibt den Namen des Generators und den Tabellennamen an, wo der Generator gefunden werden kann
@GeneratedValue Gibt die Erzeugungsstrategie an und bezieht sich auf den Namen des Generators
@ManyToOne Gibt eine viele-zu-eins-Beziehung zwischen Mitarbeiter und Abteilung an
@OneToMany (mappedBy = "Abteilung") erstellt eine bidirektionale Beziehung zwischen Mitarbeiter und Abteilung, indem einfach auf die @ManyToOne-Anmerkung in der Entität Employee Bezug genommen wird

Eine zu viele Beziehung

Eins-zu-viele-Zuordnungen ist im Allgemeinen einfach eine bidirektionale Beziehung zwischen Viel-zu-Eins-Zuordnung. Wir werden dasselbe Beispiel nehmen, das wir für viele zu einer Abbildung genommen haben.

Mitarbeiter.java

@Entity
public class Employee {

    @TableGenerator(name = "employee_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 100)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "employee_gen")
    private int idemployee;
    private String firstname;
    private String lastname;
    private String email;

    @ManyToOne
    @JoinColumn(name = "iddepartment")
    private Department department;

    // getters and setters    
}

Abteilung.java

@Entity
public class Department {

    @TableGenerator(table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", name = "department_gen", allocationSize = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "department_gen")
    private int iddepartment;
    private String name;

    @OneToMany(mappedBy = "department")
    private List<Employee> employees;

    // getters and setters    
}

Diese Beziehung wird in der Datenbank wie folgt dargestellt. Geben Sie hier die Bildbeschreibung ein

Es gibt zwei Punkte, die Sie bei jpa eins zu vielen Mapping berücksichtigen sollten:

  • Das Viele auf einer Seite ist die besitzende Seite der Beziehung. Die Spalte ist auf dieser Seite definiert.
  • Die Eins-zu-Viele-Zuordnung ist die inverse Seite, daher muss das Element mappedBy auf der inversen Seite verwendet werden.

Das vollständige Beispiel kann hier referenziert werden



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow