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

Persistance des données Java Discussion :

2012 - Comment compter les éléments d'une collection sans l'initialiser?


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Points : 36
    Points
    36
    Par défaut 2012 - Comment compter les éléments d'une collection sans l'initialiser?
    Bonjour à tous,

    J'aimerais savoir comment faire pour compter les éléments d'une collection sans avoir besoin de la charger.

    Bien sûr, la manière indiquée dans la FAQ.... ne fonctionne pas!

    http://java.developpez.com/faq/hiber...ansInitialiser

    Chez moi l'objet session n'a pas de méthode "iterate" .. c'est dépriment. Et nulle part j'ai trouvé ce petit code pourris qui fonctionne! Merci hibernate!

    Je précise que les annotations @formula... ne fonctionne non plus pas grrr.

    Si toutefois le @formula est la seule solution, peut-on faire une attribut calculé qui soit statique?

    Merci à l'âme charitable qui pourrais m'indiquer comment faire cette besogne.

    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
     
    public Integer getNBItem() {
     
    		Integer nb;
     
    		Session session = HIB_HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();
     
    		nb = ((Integer) session.iterate("select count(*) from Famille").next()).intValue();
     
    		tx.commit();
    		HIB_HibernateUtil.closeSession();				
     
    		return nb;
    	}

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par domas_24 Voir le message
    Bonjour à tous,

    J'aimerais savoir comment faire pour compter les éléments d'une collection sans avoir besoin de la charger.

    Bien sûr, la manière indiquée dans la FAQ.... ne fonctionne pas!

    http://java.developpez.com/faq/hiber...ansInitialiser

    Chez moi l'objet session n'a pas de méthode "iterate" .. c'est dépriment. Et nulle part j'ai trouvé ce petit code pourris qui fonctionne! Merci hibernate!

    Je précise que les annotations @formula... ne fonctionne non plus pas grrr.

    Si toutefois le @formula est la seule solution, peut-on faire une attribut calculé qui soit statique?

    Merci à l'âme charitable qui pourrais m'indiquer comment faire cette besogne.

    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
    public Integer getNBItem() {
    
    		Integer nb;
    		
    		Session session = HIB_HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();
    
    		nb = ((Integer) session.iterate("select count(*) from Famille").next()).intValue();
                    Query query = session.createQuery("select count(f) from Famille f""); 
                    nb = (Integer)query.uniqueResult();
    		tx.commit();
    		HIB_HibernateUtil.closeSession();				
    
    		return nb;
    	}
    Tu as l'air bien remonté là, pourtant ce n'est pas Hibernate qui a un pb, mais ton algo. Pourquoi effectuer un iterate sur le resultat d'un count?
    Essaie la solution en rouge.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  3. #3
    Membre actif Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 257
    Points
    257
    Par défaut
    C'est aussi que l'astuce d'utiliser iterate() avec une requête COUNT(*) était valable uniquement pour Hibernate2.

    Depuis Hibernate3, la FAQ d'Hibernate (chez JBoss) a été modifiée (la procédure est expliquée dans ce lien)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Merci beaucoup c'est exactement ça!

    Cependant je trouve que j'ai raison d'être remonté contre Hibernate, car en mesure du temps qu'il m'a fallu pour trouver l'information (super mauvaise indexation du site d'hibernate dans google...)

    Le problème de mon algo, c'est en fait le problème de la méthode indiquée dans tous les tuto qu'on trouve sur internet (j'ai du m'en farcir une dizaine...) et qui n'indiquent pas que c'est pour Hib2.

    Bref... Merci en tout cas pour vos deux réponses, celle-ci je les apprécie!

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupèrer les éléments d'une JList
    Par Orian dans le forum Composants
    Réponses: 13
    Dernier message: 10/09/2006, 11h53
  2. Réponses: 3
    Dernier message: 15/05/2006, 16h09
  3. Comment compter les doublons d'une colonne?
    Par Dnx dans le forum Langage SQL
    Réponses: 8
    Dernier message: 07/11/2005, 10h50
  4. [TestStand] Compter les éléments d'une chaîne de caractères
    Par capblans dans le forum Autres langages
    Réponses: 2
    Dernier message: 29/04/2005, 09h29
  5. [Graphique] Comment compter les couleurs d'une image ?
    Par yoghisan dans le forum API, COM et SDKs
    Réponses: 27
    Dernier message: 16/02/2005, 18h17

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