Mapping : pourquoi List bugge et pas Set ?
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
Code:
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 du mapping :
Code:
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> |
Au niveau de l'enregistrement des données JAVA=>Base de données, aucun soucis.
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 ;)