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

Java EE Discussion :

Problème de collection


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut Problème de collection
    Bonjour à tous,

    Voilà je dois développer pour les cours des EJB.

    Ceux-ci sont sensés encoder les résultats de match de tennis.

    J'arrive à me logger via un mot de passe dans la bd ( une interface graphique contacte un ejb session stateless remote qui contacte un ejb entité local pour accéder à la bd ). Le login fonctionne sans problème.

    Une fois que je suis connecté j'aimerais aller rechercher les id des mes matchs dans la bd ( table Match ) pour les afficher dans une combobox et ainsi pouvoir choisir le match dont on désire encoder les résultats.

    Mon ejb session contacte donc l'ejb entité pour obtenir cette liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    homeMatch = getEntityMatch1LocalHome();
            Collection col = homeMatch.findAllKey( "test" );
    Et voici ce que fait ma fonction FindAllKey dans mon ejb Entité:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
      public Collection ejbFindAllKey(String primaryKey) throws ObjectNotFoundException, FinderException
      {
        String tmp;
        ArrayList liste;
        String selectStatement;    
     
        System.out.println("*** Fonction FindByAllKey ***");      
        selectStatement = "SELECT NumMatch FROM Match";
     
        try
        {
           PreparedStatement ps = con.prepareStatement( selectStatement );
           ResultSet rs = ps.executeQuery();
           System.out.println("Requete Ok");
     
           liste = new ArrayList();     
           // Construction de la liste des matchs
           while( rs.next() )
           {
             int iVar = rs.getInt(1);
             String sVar = String.valueOf(iVar);
             liste.add( sVar );
     
           }
           ps.close();
        }
        catch( SQLException e ) { throw new FinderException("Erreur Finder"); }
     
        if( liste.isEmpty() )
            throw new ObjectNotFoundException("Pas de match dans la liste");
        else
            return liste;   
      }
    et voici mon erreur lors de l'exécution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    05/12/23 11:51:09 (*getListeMatchs*)Erreur générale: java.lang.ClassCastException: java.lang.String
    J'ai essayé des castings dans tous les sens, mais rien n'y fait, toujours la même erreur

    je me suis inspiré de ce code:
    http://www.ashita-studio.com/tutoria...hapitre_06.php

    Si quelqu'un pouvait m'aider, ce serait vraiment un coup de main en or

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    il faut peut-être voir le code de "getListeMatchs"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Un petit truc aussi défini ta liste comme une interface List et pas une ArrayList

    ( juste pour prendre des bonnes habitudes...) :o

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    A quoi sert le paramètre primaryKey ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Collection ejbFindAllKey(String primaryKey)
    Le mieux est de créer un finder en EJB-QL au lieu de coder une requête.

    Tu utilises quel IDE ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    Voilà ma fonction getListeMatchs():



    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
    17
    18
    19
    20
    21
      public void getListeMatchs()
      {
         System.out.println("*** ( EJB SESSION ) *** Fonction getListeMatchs ***");
         try
         {
            homeMatch = getEntityMatch1LocalHome();
            Collection list = homeMatch.findAllKey( "test" );// EntityMatch
            System.out.println("Collection récupérée");
     
            System.out.println("Taille de la liste: "+list.size());
            Iterator i = list.iterator();
     
            while( i.hasNext() )
            {
               System.out.println( "ok" );
            }
     
         }
         catch( NamingException exc ) { System.out.println("(*getListeMatchs*)Erreur Naming: "+exc); }
         catch( Exception       exc ) { System.out.println("(*getListeMatchs*)Erreure générale: "+exc); }     
      }
    Pour la primaryKey, elle ne me sert à rien, c'était juste un test et pour l'interface je vais la changer en list si c conseillé

    Je ne sais pas trop ce qu'est un ejb-ql.... et pour l'IDE j'utilise jdeveloper 10g

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Points : 163
    Points
    163
    Par défaut
    Peux tu donner la description de ta table Match ?


    Ce que j'ai voulu dire dans mon post précédent, c'est un finder en EJB-QL te permettant de ramener tous les enregistrments de ta table est une solution facile à mettre en oeuvre (et plus propre je pense).

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    Voilà la description de ma table Match:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
             NumMatch         -> Numérique
             DateMatch         -> Date/Heure
             HeureMatch       ->Texte
             TypeMatch        -> Numérique
             NumTerrain      -> Numérique
             NumTour          -> Numérique
             DateDebutTour -> Date/Heure
    [/code]

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    la méthode findAllKey de ta home prend bien un String aussi en paramètre ?

    sinon une méthode get qui renvoie void ca me choque un peu

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    Oui Oui, FindAll prend bien un String et pour le void je sais mais c'est juste en test alors avant de renvoyer la collection au client faudrait d'abord que mon ejb session arrive à recevoir la collection de l'ejb entité

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    si tu ne vois pas ton log "Collection récupérée" , c'est un problème de la homeMatch peut-être.

    Autre chose aussi, tu devrais mettre ton ps.close() dans un finally ainsi qu'un con.close() car tu ne fermes jamais la connection (a moins que tu le fasses ailleurs), mais en tout cas en cas d'exception ton ps.close() n'est pas appelé.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    ok, mais l'appel de la fonction me crée systématiquement une exception, quand je la mets en commentaire, plus de problème.... j'y comprends plus grand chose, suis bien perdu M'y suis-je bien pris pour récupérer ma collection ??

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par tofke
    ok, mais l'appel de la fonction me crée systématiquement une exception, quand je la mets en commentaire, plus de problème.... j'y comprends plus grand chose, suis bien perdu M'y suis-je bien pris pour récupérer ma collection ??
    apparamment oui, si tu peux pas debugué pas à pas t'as plus qu'a mettre des system.out.println un peu partout pour trouver la ligne qui te genere un classCastException parce qu'a vue de nez je vois pas la crotte

Discussions similaires

  1. Problème afficher collection avec un c:forEach
    Par bzoler dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/04/2007, 13h54
  2. Problème de collection SOS
    Par MAXIPAT dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/02/2007, 14h04
  3. problème utilisation Collection et List
    Par nawal_ensias dans le forum Services Web
    Réponses: 1
    Dernier message: 03/01/2007, 15h51
  4. Problème de collections [débutant]
    Par jackin dans le forum Langage
    Réponses: 5
    Dernier message: 10/07/2006, 14h04
  5. [C#] Problème de Collection de controles...
    Par kunfuka dans le forum ASP.NET
    Réponses: 10
    Dernier message: 08/12/2005, 16h52

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