Bonjour à tous !
Je découvre ce formidable outil qu'est Hibernate et je rencontre quelques petites difficultés. Je suis stagiaire dans une petite boite pour laquelle je développe un outil de CRM (gestion de la relation clientèle), ça c''est pour situer le contexte.
J'ai besoin de pouvoir présenter les données de mon application dans des tableaux triables et filtrables, c'est la raison pour laquelle je me suis penché sur les GlazedLists :
http://publicobject.com/glazedlists/. En plus ils fournissent une collection qui implémente notamment UserCollectionType, ce qui me permet de récupérer directement mes enregistrements dans ce "format" et de le relier directement à ma JTable.
Le petit souci que je rencontre actuellement, c'est que je dispose d'une table Catégorie que j'aimerais bien pouvoir récupérer directement sous forme de liste (d'EventList en fait, le type fournit par les GlazedLists), or pour pouvoir utiliser un type personnalisé il faut passer par le mapping d'une association si j'ai bien suivi (pour utiliser la balise <list>).
C'est à dire que (par exemple) je ne pourrais récupérer les catégories sous forme d'EventList que si je les récupères via une autre classe "conteneur" en ayant défini une relation One-to-many comme suit :
Code:
<class name="Categories">
<id name="id">
<generator class="native"></generator>
</id>
<list name="categories" collection-type="ca.odell.glazedlists.hibernate.EventListType">
<key column="id_conteneur"></key>
<list-index column="idx"></list-index>
<one-to-many class="Categorie"/>
</list>
</class>
Et en effet, celà fonctionne (ou presque). Déjà, suis-je obligé de "bricoler" de cette façon (passer par une classe qui contient toutes les catégories) pour récupérer l'ensemble des catégories dans une liste de type personnalisé ?
Ensuite, je me suis aperçu qu'en chargeant les catégories de cette façon que seule la dernière catégorie apparaissait dans ma table. Je suis allé voir dans ma base et toutes les valeurs de la colonne idx (liée au list-index) sont à 0.
Pour voir si ça venait bien de là j'ai modifié ce champ à la main en mettant une valeur différente pour chaque enregistrement (1,2,3,4...) et là effectivement, ma table était correctement remplie.
Du coup je me pose la question suivante : comment faire pour gérer correctement ce champ et qu'il ne soit pas toujours à 0 ?
Je ne comprend pas non plus la nécessite de devoir indiquer cet index à l'intérieur d'un champ de la base de données, j'imagine que c'est dû au fonctionnement interne d'hibernate mais comme celui-ci est capable de gérer tout seul des id pourquoi ne peut-il pas gérer des index de la même manière ?
Je vous remercie d'avance pour votre aide et pour vos éclaircissements !
Julien