Bonjour,
Je travaille sur un projet J2EE utilisant hibernate 3. J'utilise Hibernate Synchronizer. Tout marche à peu près bien sauf un point : lorsque je veux accéder à une collection d'objet contenu dans un objet persistent. Par exemple dans la classe Car j'ai une collection de Vote (Un véhicule peut avoir plusieurs votes) : impossible d'y accéder, la collection semble non initialisée.
Je me suis renseigné, notamment sur le lazy loading. Il est donc à priori activé mais je ne suis pas plus avancé...Ma collection n'est toujours pas initialisée (avec ou sans d'ailleur).
Voici mes fichiers de mapping :
Fichier Car :
Fichier Vote :
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 <hibernate-mapping package="test.hibernate"> <class name="Car" table="car" > <id name="Id" type="integer" column="id" > <generator class="increment"/> </id> <property name="Marque" column="marque" type="string" not-null="false" length="255" /> <property name="Modele" column="modele" type="string" not-null="false" length="255" /> <property name="Description" column="description" type="string" not-null="false" /> <property name="Url" column="url" type="string" not-null="true" length="255" /> <property name="Dtcreation" column="dtcreation" type="date" not-null="true" length="10" /> <many-to-one name="User" column="user" class="User" not-null="true" > </many-to-one> <set name="Votes" inverse="true" lazy="true"> <key column="id"/> <one-to-many class="Vote"/> </set> <set name="Comments" inverse="true" lazy="true"> <key column="id"/> <one-to-many class="Comment"/> </set> </class> </hibernate-mapping>
Et voici comment je l'utilise :
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 <hibernate-mapping package="test.hibernate"> <class name="Vote" table="vote" > <id name="Id" type="integer" column="id" > <generator class="increment"/> </id> <property name="Note" column="note" type="integer" not-null="true" length="2" /> <property name="Dtcreation" column="dtcreation" type="date" not-null="false" length="10" /> <many-to-one name="Car" column="car" class="Car" not-null="true" > </many-to-one> </class> </hibernate-mapping>
Ce bout de code m'affiche correctement le premier vote mais pas les autres. Je ne comprends pas pourquoi j'arrive à récupérer qu'un seul élement de mon Set.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Car c = carDAO.load(id); Set vote_set = c.getVotes(); Iterator it = vote_set.iterator(); while (it.hasNext()) { Vote v = (Vote) it.next(); System.out.println(v.getNote()); }
PS : ma base de données est Mysql.
Si vous avez une idée elle me serait de grand secour ! Merci.
Partager