Existe-t-il un moyen d'optimiser les relations ManyToOne à l'aide de JPA ?
P粉609866533
P粉609866533 2024-01-29 13:09:59
0
1
464

J'ai un employé qui travaille dans plusieurs départements. J'ai une relation OneToMany en classe Employee et ManyToOne en classe Department.

@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;
}

La table créée dans MySQL ressemble à ceci :

  • Liste des employés :
  • Tableau des départements :

Le problème est que j'aurai plusieurs employés et qu'ils pourront avoir plusieurs départements. La table des départements sera trop grande et les noms des départements seront répétés pour différents employés, comme le montre l'image ci-dessus. J'ai 2xManagement. Ma question est de savoir s'il est possible de créer une table de département sans Employee_id (uniquement avec le nom du département) et de créer un lien dans une table séparée avec seulement deux attributs (employee_id et Department_id). Dois-je créer une nouvelle classe pour cela ? Comment puis-je optimiser cette relation ? Y a-t-il un moyen de le faire ?

P粉609866533
P粉609866533

répondre à tous(1)
P粉391955763

Vous devez changer la solution en @ManyToMany en utilisant des entités faibles, Références : https://www.baeldung.com/hibernate-many-to-many

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal