Maison  >  Questions et réponses  >  le corps du texte

Existe-t-il un moyen d'optimiser les relations ManyToOne à l'aide de JPA ?

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 :

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粉609866533P粉609866533264 Il y a quelques jours374

répondre à tous(1)je répondrai

  • P粉391955763

    P粉3919557632024-01-30 09:24:27

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

    répondre
    0
  • Annulerrépondre