Bonjour,
En effet j'essaye d'implemeter le mapping d'une association unidirectionnelle one to one sur une cle etrangere.
Ef effet j'ai une table personne(id_person,id_adress) et une table adress(id_adress,des_adress,code_postal).
Une personne ne peut avoir qu'une seule adresse.
J'ai implementer les classes de persistnces Person respectivement Adress comme suit
Ci-apres mes fichiers de mapping personne.hbm.xml respectivement adresse.hbm.xml
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
103
104
105
106
107
108
109
110 package com.benhassine.beans; public class Person { private String id; private Integer address; /** * */ public Person() { super(); } /** * @param id * @param address */ public Person(String id, Integer address) { super(); this.id = id; this.address = address; } /** * @return the id */ public String getId() { return id; } /** * @return the idAdress */ public Integer getAddress() { return address; } /** * @param id the id to set */ public void setId(String id) { this.id = id; } /** * @param idAdress the idAdress to set */ public void Integer(Integer address) { this.address = address; } } package com.benhassine.beans; public class Address { private Integer id; private String desAdress; private Integer codePostal; /** * */ public Address() { super(); // TODO Auto-generated constructor stub } /** * @param id * @param desAdress * @param codePostal */ public Address(Integer id, String desAdress, Integer codePostal) { super(); this.id = id; this.desAdress = desAdress; this.codePostal = codePostal; } /** * @return the codePostal */ public Integer getCodePostal() { return codePostal; } /** * @return the desAdress */ public String getDesAdress() { return desAdress; } /** * @return the id */ public Integer getId() { return id; } /** * @param codePostal the codePostal to set */ public void setCodePostal(Integer codePostal) { this.codePostal = codePostal; } /** * @param desAdress the desAdress to set */ public void setDesAdress(String desAdress) { this.desAdress = desAdress; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } }
Code xml : 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 <class name="com.benhassine.beans.Person"> <id name="id" column="id_person"> <generator class="native"/> </id> <many-to-one name="address" column="id_address" unique="true" not-null="true"/> </class> <class name="com.benhassine.beans.Address"> <id name="id" column="id_address"> <generator class="native"/> </id> <property name="desAdress" column="des_adress" /> <property name="codePostal" column="code_postal" /> </class>
Dans le fichier Hibernate je renseigne mes fichiers de mapping comme suit
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <!-- This section is not generated automatically --> <!-- Author : BEN HASSINE Med Ali --> <!-- Date : 04/08/2007 --> <!-- Mapping Files --> <mapping resource="com/benhassine/beans/adresse.hbm.xml"/> <mapping resource="com/benhassine/beans/personne.hbm.xml"/>
Je m'attendais que j'aurais pas de probleme puisque je me suis appuye pour construire mon exemple sur le manuel de reference de hibernate http://www.dil.univ-mrs.fr/~massat/docs/hibernate-3.1/reference/fr/html_single/#assoc-unidirectional-121
Mais malheuresement quand j'essaye de generer les scripts de creation des tables par le biais de [new SchemaExport((new Configuration()).configure()).create(true, true);] une exception de mapping est levee dont le message est le suivant : An association from the table Person refers to an unmapped class: java.lang.Integer
Pour vous bien orienter java.lang.Integer cest en fait le type de la cle etrangere (voir classe de persistance Adress), en effet si je change le type par String le message de l'exception est devenu :
An association from the table Person refers to an unmapped class: java.lang.String
Je suis plante depuis 2 jours et je vois pas ou est l'erreur exactement.
Au secours SVP.
NB: Je m'excuse de ne pas avoir mis les accents sur les (e).
Partager