Hibernate Annotations et oneToMany EAGER [résolu] - Java - Programmation
MarshPosté le 04-11-2008 à 11:06:08
Edit final : Problème résolu avec les dernières versions de Spring, Hibernate et Hibernate-annotations. Je suppose donc un bug corrigé. mais le problème est toujours là en passant pas la requête telle qu'écrit plus bas, alors qu'en passant pas hibernateTemplate de Spring, le soucis est résolu. Spring ajoute
return(name == contact.name || (name != null && name
.equals(contact.name)));
}
@Override
publicint hashCode(){
int hash = 7;
hash = 31 * hash + name.hashCode();
return hash;
}
}
Quand je fais cette requête :
Code :
List list = getSession().createCriteria(AddressBook.class).list();
la liste contient autant d'AddressBook que j'ai de Contact, mais ce sont les mêmes instances de AddressBook qui sont répétées. En clair, j'ai en base deux AddressBooks, le premier avec 2 Contacts, le second avec 3 Contacts. Et la liste rendu par HHH contient deux fois le premier AddressBook, et trois fois le second.
On dirait que l'ID de AddressBook n'est pas prise en compte.
C'est la première fois que je joue avec JPA/Hibernate Annotations, si ça pue, merci de me flammer.
edit: alléger le code pour avoir que l'essentiel dans le post, c'est pas trop con finalement.
re-edit: Ça devient métaphysique. Si le FetchType est LAZY, ça fonctionne, je me retrouve avec juste deux AddressBooks dans la liste. Sauf que je veux pas que ce soit en LAZY, mais bien en EAGER, donc je voudrais comprendre
Message édité par brisssou le 04-11-2008 à 12:40:27
--------------- HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Marsh Posté le 04-11-2008 à 11:06:08
Edit final : Problème résolu avec les dernières versions de Spring, Hibernate et Hibernate-annotations. Je suppose donc un bug corrigé. mais le problème est toujours là en passant pas la requête telle qu'écrit plus bas, alors qu'en passant pas hibernateTemplate de Spring, le soucis est résolu. Spring ajoute
Je m'en vais donc relire la doc de Hibernate...
problème initial :
y a un truc que je comprends pas avec JPA là. J'ai ses deux classes :
et
Quand je fais cette requête :
la liste contient autant d'AddressBook que j'ai de Contact, mais ce sont les mêmes instances de AddressBook qui sont répétées.
En clair, j'ai en base deux AddressBooks, le premier avec 2 Contacts, le second avec 3 Contacts. Et la liste rendu par HHH contient deux fois le premier AddressBook, et trois fois le second.
On dirait que l'ID de AddressBook n'est pas prise en compte.
C'est la première fois que je joue avec JPA/Hibernate Annotations, si ça pue, merci de me flammer.
edit: alléger le code pour avoir que l'essentiel dans le post, c'est pas trop con finalement.
re-edit: Ça devient métaphysique. Si le FetchType est LAZY, ça fonctionne, je me retrouve avec juste deux AddressBooks dans la liste. Sauf que je veux pas que ce soit en LAZY, mais bien en EAGER, donc je voudrais comprendre
Message édité par brisssou le 04-11-2008 à 12:40:27
---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris