Bonjour,
J'ai un problème avec une mise à jour de données avec Hibernate.
Voici le code :
Classe Personne :Classe Compte
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 @Entity @Table(name="personne") public class Personne { private Integer id; private String nom; private String prenom; @Id @GeneratedValue @Column(name="id", nullable=false) public Integer getId() { return id; } @Column(name="nom", nullable=false) public String getNom() { return nom; } @Column(name="prenom", nullable=false) public String getPrenom() { return prenom; } public void setId(Integer id) { this.id = id; } public void setNom(String nom) { this.nom = nom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String toString(){ StringBuilder sb = new StringBuilder(); sb.append(id); sb.append(" : "); sb.append(nom); sb.append(" "); sb.append(prenom); return sb.toString(); } public boolean equals(Object o ){ if(o == null)return false; if( ! (o instanceof Personne))return false; Personne pers = (Personne)o; return pers.getId().equals(getId()); } public int hashCode(){ return getNom().hashCode() + getPrenom().hashCode(); } }Et voici ma fonction de sauvegarde
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 @Entity @Table(name="compte") public class Compte { private Integer id; private String nom; private Personne proprietaire; @Id @Column(name="id", nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } @Column(name="nom", nullable = false) public String getNom() { return nom; } @ManyToOne @JoinColumn(name="id_personne", nullable=false, updatable=false) public Personne getProprietaire() { return proprietaire; } public void setId(Integer id) { this.id = id; } public void setNom(String nom) { this.nom = nom; } public void setProprietaire(Personne proprietaire) { this.proprietaire = proprietaire; } public boolean equals(Object o){ if( o == null) return false; if( ! (o instanceof Compte))return false; Compte cpt = (Compte)o; return cpt.getId().equals(id) && cpt.getNom().equals(nom); } public int hashCode(){ return nom.hashCode(); } }L'ajout en base de données se passe sans soucis. Cependant lors de la modification, bien que l'objet Compte après l'update soit bon (modification prise en compte), en base de données aucun changement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public Compte save(Compte compte){ if(compte.getId() == null){ em.persist(compte); }else{ compte = em.merge(compte); } return compte; }
Avez-vous une idée sur le problème ?
Merci à vous tous.
Cyril
Partager