Bonjours,
J'ai une many-to-one bidirectionnelle entre employee et departement. J'ai une méthode equals() qui permet de tester l'égalité entre les employés et les département.
Cette méthode est utilisée pour activer un bouton "Mettre à jour" qui teste si l'objet en mémoire n'a pas était modifié.
Le problème est que la méthode equals() de employee appelle celle de département qui appelle celle de employee dans la méthode equals() de la liste des employés, ce qui l'élève une exception stackoverflow à cause de la boucle infinie. Quelqu'un à une idée de la manière de contourner cette boucle infinie?
Departement:
Department equals():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @NotNull @Size(max = 250) @Column(name = "description") private String description; @OneToMany(mappedBy = "department", cascade = CascadeType.MERGE) private List<Employee> employeeList;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Department other = (Department) obj; if (!Objects.equals(this.name, other.name)) { return false; } if (!Objects.equals(this.description, other.description)) { return false; } if (!Objects.equals(this.employeeList, other.employeeList)) { return false; }
Employee:
Employee equals():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @JoinColumn(name = "id_department", referencedColumnName = "id_department") @ManyToOne(fetch = FetchType.EAGER) private Department department;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Employee other = (Employee) obj; if (!Objects.equals(this.begincontract, other.begincontract)) { return false; } if (!Objects.equals(this.department, other.department)) { return false; }
Partager