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

JSF Java Discussion :

Count sur une propriété d'un bean entité


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut Count sur une propriété d'un bean entité
    Bonjour,

    Je dispose d'un entity bean "question" qui possède une propriété de type collection "interestedUsers". J'aimerais dans une page JSF affiche le nombre total d'utilisateurs intéressés par une question.

    J'ai ajouté une méthode InterstedUserCount qui renvoit un entier à mon entity bean, mais je n'arrive pas à y accéder car ce n'est pas une propriété. J'ai essayé d'en faire une propriété en la préfixant de get, mais c'est l'entity manager qui rale parce qu'il n'y a pas le setter qui va avec.

    Faut il rajouter une annotation sur la méthode ou simplement ma déclaration dans JSF qui n'est pas bonne (j'utilise #{question.InterestedUserCount()} ) ?.

    Merci de m'éclaire dans mes recherches, je débute bien sûr et c'est pas évident de trouver la documentation que l'on cherche....

  2. #2
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    bonjour,

    pouquoi ne pas utiliser:

    List<beanentite> XX=sessionEJB.queryFindByXX();
    count = xx.size();

    je crois que ça est pls facile!

    bon courage

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut
    Le truc, c'est que j'ai essayé de mettre cette propriété count dans mon bean entité (EJB3). Mais dans ce cas, c'est l'entity manager qui ne sait pas quoi faire de cette propriété étant donné qu'elle n'a pas de setter.

    Je me dis que je vais peut être devoir faire un bean spécifique avec une méthode pour juste avoir le count, mais c'est vraiment compliqué je trouve !

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    faut etre fou pour executer ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<beanentite> XX=sessionEJB.queryFindByXX();
    count = xx.size();
    tu parcours ta collection pour obtenir le size

    il vaut mieux faire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public int count() {
            return Integer.valueOf(em.createQuery("select count(o) from NewEntity as o ").
                    getSingleResult().
                    toString());
        }

    et pour une requete avec un index de dep et un max count

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       public List<NewEntity> findByIndex(int index, int max) {
            return em.createQuery("select object(o) from NewEntity as o ORDER BY o.id").
                    setFirstResult(index).
                    setMaxResults(max).
                    getResultList();
        }

  5. #5
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    c'est la plus facile,

    une fois reussi, on cherche sur l'optimisation. c'est presque tous les gens font ça, ils resoluent le probleme ensuite ils cherchent à optimiser

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut pas de jsf alors
    Donc si je comprends bien, il n'y a pas de composant JSF tout fait qui permette d'afficher le nombre d'objets contenus dans une collection.

    Il faut donc que je développe un méthode getCount sur mon bean entité qui me renvoie le nombre de composants liés.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Citation Envoyé par mbouzouita
    bonjour,

    pouquoi ne pas utiliser:

    List<beanentite> XX=sessionEJB.queryFindByXX();
    count = xx.size();

    je crois que ça est pls facile!

    bon courage
    t es fou, tu dois d abord charger la liste pour obtenir ensuite sa taille !

    si tu utilises EJB 3.0 je te conseille :

    dans ton managed bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<NewEntity> news = newsEntityFacade.findByIndex(index, rowByPage);
    dans ta facade

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
        public int count() {
            return Integer.valueOf(em.createQuery("select count(o) from NewEntity as o ").
                    getSingleResult().
                    toString());
        }
    note tu peux simplement ajouter des param a ton count ... avec .setParameter(index du param, "valeur")


    Si tu utilises Hibernate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public int count() {
            return (Integer) session.createCriteria(NewEntity.class).setProjection(Projections.count("id").setDistinct()).uniqueResult();    
        }

Discussions similaires

  1. Création tag avec test sur une proprièté d'un bean
    Par Didine981 dans le forum Struts 1
    Réponses: 1
    Dernier message: 04/06/2009, 22h08
  2. Réponses: 4
    Dernier message: 15/02/2007, 10h06
  3. Réponses: 2
    Dernier message: 06/09/2006, 23h20
  4. probleme sur count sur une base differente
    Par webisa dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/07/2005, 05h32
  5. un count sur une jointure et ca ne fonctionne pas
    Par elbronziero dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/10/2004, 11h23

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