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

Langage Java Discussion :

Problème de cast avec ListIterator


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut Problème de cast avec ListIterator
    Bonjour à tous,

    Je fais actuellement un projet java pour ma fac mais je bloque depuis plus d'une semaine sur une erreur.

    Pour information, j'ai une classe "Version" et une classe "Article" qui contient une liste de version.
    J'aimerais pouvoir récupérer l'id de la version précédent la version courante. Pour cela, je fais ceci:

    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 int getVersionBefore(int idVersion) {
            Article a = findArticleVersion(idVersion);
    	Query q = em.createQuery("From Article a Join a.lesversions v Where a.id=:idArticle ");
    	q.setParameter("idArticle", a.getId());
    	List<Version> lesversions = new ArrayList<Version>();
    	lesversions.addAll(q.getResultList());
    	ListIterator<Version> listit = lesversions.listIterator();
    	while (listit.hasNext()) {
    		Version version = (Version) listit.next();
    		if (version.getIdVersion() == idVersion && listit.hasPrevious()) {
    			return listit.previous().getIdVersion();
    		}
    	}
    	return idVersion;
    }
    J'obtient cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.ejb.EJBException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to encyclo.ejb.Version
    Sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Version version = (Version) listit.next();
    Je croyais pourtant que listit.next() renvoyait le prochain élément de listit.
    J'ai essayé de faire l'initialisation des listes de plusieurs façons mais je ne trouve pas mon problème.

    Si quelqu'un l'a déjà rencontré, je suis preneuse de la solution.

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Bonjour,

    Le problème est que ton iterateur te renvoies un objet Object, et que toi, tu lui dis de le considérer comme un objet Version.

    A voir ton code, je dirais que le problème vient lors de la récupération en base. En effet, lorsque tu dis q.getResultList(), a priori, tu (enfin Java) ne sais pas que tu dois récupérer des objets Version, donc par défaut, tu (toujours Java) considères que c'est un Object.

    Je ne sais pas par contre comment faire techniquement pour résoudre le problème, désolé.

    Mako.

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 81
    Par défaut
    Merci de ta réponse.
    Peut être qu'il faut ajouter un cast au moment où je récupère le q.getResultList().
    Je vais regarder ça.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Melex Voir le message
    Peut être qu'il faut ajouter un cast au moment où je récupère le q.getResultList().
    Non, un cast ne peut pas t'aider. À un moment ou à un autre, tu dois indiquer comment transformer le résultat de q.getResultList() en des objets Version.
    Java ne va pas le deviner. En tout cas, ce ne sont pas des sous-types de Version, donc un cast ne marchera pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de cast avec LinqToSQL
    Par XatOr dans le forum Linq
    Réponses: 5
    Dernier message: 10/06/2010, 15h27
  2. [débutant] Problème de Cast avec des vector
    Par syl55 dans le forum Langage
    Réponses: 9
    Dernier message: 20/05/2009, 10h04
  3. problème de cast avec CORBA
    Par Irafelo dans le forum Langage
    Réponses: 3
    Dernier message: 12/12/2008, 17h02
  4. Problème de cast avec un wxMenu
    Par mister3957 dans le forum wxWidgets
    Réponses: 3
    Dernier message: 09/09/2008, 10h41
  5. Problème de cast avec l'outil de génération de requetes VS2005
    Par rabddoul dans le forum Accès aux données
    Réponses: 1
    Dernier message: 22/02/2007, 13h19

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