Gibt es eine Möglichkeit, ManyToOne-Beziehungen mithilfe von JPA zu optimieren?
P粉609866533
P粉609866533 2024-01-29 13:09:59
0
1
383

Ich habe einen Mitarbeiter, der in mehreren Abteilungen arbeitet. Ich habe eine OneToMany-Beziehung in der Mitarbeiterklasse und eine ManyToOne-Beziehung in der Abteilungsklasse.

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    
    @Size(min = 3, max = 10, message = "Invalid name")
    private String name;
    @Email
    private String email;
    
    @OneToMany(mappedBy = "employee")
    private List<Department> departments;
}

@Entity
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String department;
    
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "employee_id", referencedColumnName = "id")
    private Employee employee;
}

Die in MySQL erstellte Tabelle sieht folgendermaßen aus:

  • Mitarbeiterliste:
  • Abteilungstisch:

Das Problem ist, dass ich mehrere Mitarbeiter haben werde und diese mehrere Abteilungen haben können. Die Abteilungstabelle wird zu groß sein und die Abteilungsnamen werden für verschiedene Mitarbeiter wiederholt, wie im Bild oben gezeigt. Ich habe 2xManagement. Meine Frage ist, ob es möglich ist, eine Abteilungstabelle ohne Mitarbeiter-ID (nur mit Abteilungsnamen) zu erstellen und eine separate Tabelle mit nur zwei Attributen (Mitarbeiter-ID und Abteilungs-ID) zu verknüpfen. Muss ich dafür eine neue Klasse erstellen? Wie kann ich diese Beziehung optimieren? Gibt es eine Möglichkeit, dies zu tun?

P粉609866533
P粉609866533

Antworte allen(1)
P粉391955763

您需要使用弱实体将解决方案更改为@ManyToMany, 参考文献: https://www.baeldung.com/hibernate-many-to-many

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!