bjr tout le monde .
je voulais utiliser le framwork hibernate pour gerer une base de donnees mysql a partir d'une application java ,toutefois j'ai des petits problemes concernant l'utilisation de ce framwork .
un petit exemple pour vous expliquer mes soucis :
j'ai deux tables appartement et personne(regardez l'image jointe)
alors comme vous voyez le power amc me genere deux tablex, chacune contient la cle primaire de l'autre table .
je travaille avec netbeans 6.5 qui me genere automatiquement les fichiers de mapping et les classes persitantes :
==classe Personne:
==classe Appartement:
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 package data; import java.util.HashSet; import java.util.Set; /** * Personne generated by hbm2java */ public class Personne implements java.io.Serializable { private int idPer; private Appartement appartement; private String nomPer; private Set appartements = new HashSet(0); public Personne() { } public Personne(int idPer, Appartement appartement) { this.idPer = idPer; this.appartement = appartement; } public Personne(int idPer, Appartement appartement, String nomPer, Set appartements) { this.idPer = idPer; this.appartement = appartement; this.nomPer = nomPer; this.appartements = appartements; } public int getIdPer() { return this.idPer; } public void setIdPer(int idPer) { this.idPer = idPer; } public Appartement getAppartement() { return this.appartement; } public void setAppartement(Appartement appartement) { this.appartement = appartement; } public String getNomPer() { return this.nomPer; } public void setNomPer(String nomPer) { this.nomPer = nomPer; } public Set getAppartements() { return this.appartements; } public void setAppartements(Set appartements) { this.appartements = appartements; } }
alors pour inserer une ligne dans la table appartement je dois spécifier le personne qui habite cet appartement .et pour inserer une dans la table personne je dois specifier l'appartement de cette personne .
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
60
61
62 package data; // Generated 25 avr. 2009 19:24:22 by Hibernate Tools 3.2.1.GA import java.util.HashSet; import java.util.Set; /** * Appartement generated by hbm2java */ public class Appartement implements java.io.Serializable { private int idAppar; private Personne personne; private Integer immeuble; private Set personnes = new HashSet(0); public Appartement() { } public Appartement(int idAppar) { this.idAppar = idAppar; } public Appartement(int idAppar, Personne personne, Integer immeuble, Set personnes) { this.idAppar = idAppar; this.personne = personne; this.immeuble = immeuble; this.personnes = personnes; } public int getIdAppar() { return this.idAppar; } public void setIdAppar(int idAppar) { this.idAppar = idAppar; } public Personne getPersonne() { return this.personne; } public void setPersonne(Personne personne) { this.personne = personne; } public Integer getImmeuble() { return this.immeuble; } public void setImmeuble(Integer immeuble) { this.immeuble = immeuble; } public Set getPersonnes() { return this.personnes; } public void setPersonnes(Set personnes) { this.personnes = personnes; } }
c'est normale puisque dans les deux tables on a une clef étrangère .
sous mysql j'utilise la commande : set foreign_key_checks=0 pour annuler la vérification des valeurs de la clef étrangère, mais avec hibernate je sais pos comment faire !je veux insérer des lignes dans la table appartement sans avoir besoin de spécifier la personne puisque comme vous avez remarque dans le mcd une appartement peut être vide ou habite par une personne au max(c'est juste un exemple ) .
j'aimerais savoir aussi a quoi sert l''attribut personnes et appartement qui sont de type set
je vous remercie de vouloir m'aider .
Partager