IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Set et Dbunit -> comment tester si plusieurs elements sont sauves ?


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 543
    Points
    543
    Par défaut Set et Dbunit -> comment tester si plusieurs elements sont sauves ?
    Bonjour,

    Je suppose que certains ont deja eut le pb.
    J ai sauvegardee dans la BD via hibernate plusieurs elements.
    Je veux verifier que ces elements sont bien dans la base avec db unit

    Seul probleme, la couche de mapping des classes par hibernate (generee avec le pligin d eclipse) utilise un Set (HashSet pour etre precis).

    Du coup si je veux sauver element1,element2,element3 j ai dans la base
    element1,element2,element3 ou element3,element1,element2 ou ....

    L ordre d un Set n est pas definit d apres la doc Sun -> j ai regulierement une erreur sur mon test car il attend 1,2,3 mais il recoit 3,1,2

    a part ne sauvegarder qu un element, y a t il une solution ? (dans mon cas, je dois au niveau applicatif sauver 3 elements distinct, donc tester avec 1 n apporte pas grand chose ...)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 543
    Points
    543
    Par défaut solution partielle
    en utilisant LinkedHashSet au lieu de HashSet dans les DAO, je devrais conserver l ordre d insertion d apres la doc sun.
    malheureusement ca n a pas l aire de marcher

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par cdubet Voir le message
    en utilisant LinkedHashSet au lieu de HashSet dans les DAO, je devrais conserver l ordre d insertion d apres la doc sun.
    malheureusement ca n a pas l aire de marcher
    Si ça fonctionne... mais pour récupérer les éléments dans l'ordre d'insertion, il faut utiliser un Itérator sur ta LinkedHashSet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    LinkedHashSet lhs;
    Iterator iter = lhs.iterator();
    int i = 0;
    while(iter.hasNext()) {
       System.out.println("Element insere en position " + i + ": " + iter.next().toString());
       i++;
    }
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Points : 543
    Points
    543
    Par défaut precison
    Merci de ton aide

    Le probleme, c est que c est pas moi qui fait la boucle mais hibernate en sauvant les donnees
    En fait j ai remarque que l ordre avec un LinkedHashSet n est plus aleatoire:
    je cree 1,2,3 et hibernate sauve en base de donnees 3 puis 2 puis 1

    Je sais pas pourquoi, surtout que j ai la meme config sur une autre classe et j ai dans celle ci 1,2,3 quand je sauve ...

    Autre remarque, si je supprime dans ma classe
    public int hashCode() {
    return id;
    // (id =0 car l object n est pas encore sauvegarde et c est oracle qui donne la cle par une sequence)
    }

    j ai un autre ordre dans la base... qui change a chaque fois celui ci

    Pour info: je suis en JDK 1.4 et hibernate 3.05 mais je doute que ca vienne de la ....

Discussions similaires

  1. [XL-2010] Dans une fonction, comment tester plusieurs valeurs d'une seule cellule
    Par yzf-r dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/08/2011, 12h09
  2. Tester si 2 element sont dans le même noeud
    Par garbani dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 31/07/2008, 10h07
  3. Comment tester si des tables sont déjà attachées ?
    Par Flo88 dans le forum VBA Access
    Réponses: 9
    Dernier message: 28/02/2008, 12h58
  4. [XPath] comment tester si un element n'a pas d'attributs ?
    Par kikoo_paris dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/09/2006, 16h22
  5. Réponses: 7
    Dernier message: 05/06/2006, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo