Bonjour,
Je souhaiterais mapper une association many to many avec des attributs selon l'exemple suivant :
Voici ce que j'ai fait :A peut avoir plusieurs B
B peut avoir plusieurs A
C association entre A et B
create table A(
idA int primary key,
champA string
);
create table B(
idB int primary key,
champB string
);
create table C(
idA integer,
idB integer,
attributC varchar ,
constraint pk primary key (idA,idB),
foreign key (idA) references A(idA),
foreign key (idB) references B(idB)
);
- La classe pharmacien
le mapping de la classe pharmacien
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
63
64
65
66
67
68
69
70
71
72
73 package com.beans; import java.util.HashSet; import java.util.Set; public class Pharmacien { private Set<DonnerMedicaments> medicaments_phar = new HashSet<DonnerMedicaments>(0); private int num_phar; private String prenom; private String nom; private String email; public Set<DonnerMedicaments> getMedicaments_phar() { return medicaments_phar; } public void setMedicaments_phar(Set<DonnerMedicaments> medicaments_phar) { this.medicaments_phar = medicaments_phar; } public int getNum_phar() { return num_phar; } public void setNum_phar(int num_phar) { this.num_phar = num_phar; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAdr() { return adr; } public void setAdr(String adr) { this.adr = adr; } public int getTel() { return tel; } public void setTel(int tel) { this.tel = tel; } public String getPswd() { return pswd; } public void setPswd(String pswd) { this.pswd = pswd; } public String getSexe() { return sexe; } public void setSexe(String sexe) { this.sexe = sexe; } private String adr; private int tel; private String pswd; private String sexe; }la classe patient
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 <?xml version="1.0" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.beans"> <class name="Pharmacien" table="pharmacien"> <id name="num_phar" type="int" column="num_phar"> <!-- <generator class="native"/> --> </id> <property name="prenom" type="string" column="prenom" /> <property name="nom" type="string" column="nom" /> <property name="email" type="string" column="email" /> <property name="adr" type="string" column="adr" /> <property name="tel" type="int" column="tel" /> <property name="pswd" type="string" column="pswd" /> <property name="sexe" type="string" column="sexe" /> <!-- one to many pharmacien&donner_medicaments --> <set name="medicaments_phar" table="donner_medicaments" inverse="true" lazy="true" fetch="select"> <key> <column name="num_phar" not-null="true" /> </key> <one-to-many class="DonnerMedicaments" /> </set> </class> </hibernate-mapping>le mapping de la classe patient
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 package com.beans; import java.util.Date; import java.util.HashSet; import java.util.Set; public class Patient { private Set<DonnerMedicaments> medicaments_pat = new HashSet<DonnerMedicaments>(0); private int num_pat; private String nom_pat; private String pr_pat; private String sexe_pat; public String getSexe_pat() { return sexe_pat; } public void setSexe_pat(String sexe_pat) { this.sexe_pat = sexe_pat; } private int tel_pat; public int getTel_proch() { return tel_proch; } public void setTel_proch(int tel_proch) { this.tel_proch = tel_proch; } private int tel_proch; private String email_pat; private String adr_pat; public Set<DonnerMedicaments> getMedicaments_pat() { return medicaments_pat; } public void setMedicaments_pat(Set<DonnerMedicaments> medicaments_pat) { this.medicaments_pat = medicaments_pat; } public int getNum_pat() { return num_pat; } public void setNum_pat(int num_pat) { this.num_pat = num_pat; } public String getNom_pat() { return nom_pat; } public void setNom_pat(String nom_pat) { this.nom_pat = nom_pat; } public String getPr_pat() { return pr_pat; } public void setPr_pat(String pr_pat) { this.pr_pat = pr_pat; } public int getTel_pat() { return tel_pat; } public void setTel_pat(int tel_pat) { this.tel_pat = tel_pat; } public String getEmail_pat() { return email_pat; } public void setEmail_pat(String email_pat) { this.email_pat = email_pat; } public String getAdr_pat() { return adr_pat; } public void setAdr_pat(String adr_pat) { this.adr_pat = adr_pat; } public String getProfess_pat() { return profess_pat; } public void setProfess_pat(String profess_pat) { this.profess_pat = profess_pat; } public Date getDat_naiss_pat() { return dat_naiss_pat; } public void setDat_naiss_pat(Date dat_naiss_pat) { this.dat_naiss_pat = dat_naiss_pat; } public String getLieu_naiss() { return lieu_naiss; } public void setLieu_naiss(String lieu_naiss) { this.lieu_naiss = lieu_naiss; } private String profess_pat; private Date dat_naiss_pat; private String lieu_naiss; }LA classe DonnerMedicaments
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 <?xml version="1.0" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.beans"> <class name="Patient" table="patient"> <id name="num_pat" type="int" column="num_pat"> <!-- <generator class="native"/> --> </id> <property name="pr_pat" type="string" column="pr_pat" /> <property name="nom_pat" type="string" column="nom_pat" /> <property name="email_pat" type="string" column="email_pat" /> <property name="adr_pat" type="string" column="adr_pat" /> <property name="tel_pat" type="int" column="tel_pat" /> <property name="tel_proch" type="int" column="tel_proch" /> <property name="sexe_pat" type="string" column="sexe_pat" /> <property name="profess_pat" type="string" column="profess_pat" /> <property name="dat_naiss_pat" type="date" column="dat_naiss_pat" /> <property name="lieu_naiss" type="string" column="lieu_naiss" /> <!-- one to many patient&donner_medicaments --> <set name="medicaments_pat" table="donner_medicaments" inverse="true" lazy="true" fetch="select"> <key> <column name="num_pat" not-null="true" /> </key> <one-to-many class="DonnerMedicaments" /> </set> </class> </hibernate-mapping>le mapping de la classe DonnerMedicaments
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 package com.beans; import java.io.Serializable; import java.util.Date; public class DonnerMedicaments implements Serializable { private Patient patient; private Pharmacien pharmacien; public Pharmacien getPharmacien() { return pharmacien; } public void setPharmacien(Pharmacien pharmacien) { this.pharmacien = pharmacien; } public Patient getPatient() { return patient; } public void setPatient(Patient patient) { this.patient = patient; } private int num_pat; private int num_phar; private Date date; private String medicament; public int getNum_pat() { return num_pat; } public void setNum_pat(int num_pat) { this.num_pat = num_pat; } public int getNum_phar() { return num_phar; } public void setNum_phar(int num_phar) { this.num_phar = num_phar; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getMedicament() { return medicament; } public void setMedicament(String medicament) { this.medicament = medicament; } }L'erreur est ici sachant que j'ai declaré medicaments :
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 <?xml version="1.0" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.beans"> <class name="DonnerMedicaments" table="donner_medicaments"> <composite-id> <key-many-to-one name="num_pat" column="num_pat" class="Patient"/> <key-many-to-one name="num_phar" column="num_phar" class="Pharmacien"/> </composite-id> <property name="date" type="date" column="date" /> <property name="medicament" type="string" column="medicament" /> <!-- one to many pour patient_donner_medicaments --> <many-to-one name="patient" class="Patient" fetch="select" insert="false" update="false"> <column name="num_pat" not-null="true" /> </many-to-one> <!-- one to many pour pharmacien_donner_medicaments --> <many-to-one name="pharmacien" class="Pharmacien" fetch="select" insert="false" update="false"> <column name="num_phar" not-null="true" /> </many-to-one> </class> </hibernate-mapping>
s.save(medicaments);
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?
Merci d'avance pour votre aide.
Partager