[hibernate] Collection d'objet persistent
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 :
Code:
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> |
Fichier Vote :
Code:
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> |
Et voici comment je l'utilise :
Code:
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());
} |
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.
PS : ma base de données est Mysql.
Si vous avez une idée elle me serait de grand secour ! Merci.