Bonjour
J'utilise hibernate depuis peu et suis confronté à cette montagne de connaissances à ingurgiter pour savoir s'en servir
Je vous soumet mon problème :
Deux classes, deux tables : A et B
A peut avoir plusieur B, B ne fait référence qu'à un seul A. Classique.
Je bosse sous mySql.
Voici mes déclarations de classes
Au niveau du mapping :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class A { int id; List<B> listB = new List<B>(10); ... } class B { ind id; A monAparent; ... }
Au niveau de l'enregistrement des données JAVA=>Base de données, aucun soucis.
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 <class name="A" table="A"> <id name="id" ... </id> <list name="listB" inverse="true" cascade = "all"> <key column="id_A"/> <list-index column="name"/> <one-to-many class="B"/> </list> </class> <class name="B" table="B"> <id name="id" ... </id> <many-to-one name="monAparent" class="A" column="id_A" not-null="true" /> </class>
Mais après une requête "from A as a order by a.id asc", Hibernate me trouve tous mes A, mais me trouve plus de B qu'il n'y en a vraiment.
Par exemple, après récupération, dans premierA.listB, j'aurai :
- null
- null
- 1enregistrementDeB
- 1autreEnregistrementDeB
?!
J'ai ensuite essayé de remplacer "List" par "Set" aussi bien dans ma classe que dans mon mapping, et ça marche correctement. Mais pourquoi ?!
Et au passage, quelles sont les différences fondamentales entre List et Set ?
Merci d'avance, et bonne année![]()
Partager