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 :

[Hibernate] - ClassCastException dans une requête


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 62
    Points
    62
    Par défaut [Hibernate] - ClassCastException dans une requête
    Bonjour,

    Me revoici me revoilà avec encore un petit problème sur Hibernate, ben oui débutant donc j'apprend !!!
    Alors j'éxécute une requête effectuant une jointure, et lorsque je veux traiter le résultat, j'ai une erreur de cast d'objet. J'ai pourtant suivi des tuto et aide que j'ai trouvé sur ce site, ainsi que la doc hibernate, et j'ai la même syntaxe (sauf pour mes noms de variables et de classe )

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Iterator contacts = session.iterate("select contact.Nom, contact.Prenom from Contact as contact where contact.titre.Id='1'"); 
     try {	
     	while (contacts.hasNext()) {
     	Contact contact = (Contact) contacts.next();
     	System.out.println("nom = " + contact.getNom());
                    } 
    }catch (Exception e) {
     	e.printStackTrace();
     	System.out.println("Erreur dans la boucle");
    };
    et voici ce que j'ai dans la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Hibernate: select contact0_.nom as x0_0_, contact0_.prenom as x1_0_ from contact contact0_ where (contact0_.num_titre='1' )
    java.lang.ClassCastException: [Ljava.lang.Object;
    	at Test.main(Test.java:33)
    Erreur dans la boucle
    J'avais déjà demandé de l'aide sur ce forum pour ma requête car j'avais un problème avec, donc je pense qu'elle est bonne, surtout que quand je vérifie le nombre de résultat, il est bon, je ne comprend donc pas cette erreur.
    J'ai essayé en traitant directement à parir d'une liste en faisant un session.find, mais lors du traitement, j'ai la même erreur.

    Si quelqu'un voit d'ou peut venir mon erreur je suis preneur.

    Merci par avance.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    que donne "contacts.next().getClass()" ?
    Je doute que celà donne la classe Contact

    Si ta requête spécifie un certain nombre de colonnes, je ne pense pas que tu puisse attendre autre chose qu'un tabeau d'objet

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Alwin
    que donne "contacts.next().getClass()" ?
    Je doute que celà donne la classe Contact

    Si ta requête spécifie un certain nombre de colonnes, je ne pense pas que tu puisse attendre autre chose qu'un tabeau d'objet
    J'ai mis "contacts.next().getClass()", et là il ne compile même pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cannot cast from Class to Contact"

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    blblblblbl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Returned class : " + contacts.next().getClass());

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Resalut, le resultat de ta requete est en fait une List(Interface List) composée de tableau d'objets (Object[2] dans ton cas)


  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Pour etre plus precis (toujours dans ton cas), c est une List de tableaux de String (contenant le nom et le prenom)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Alwin
    blblblblbl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Returned class : " + contacts.next().getClass());
    Voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Returned class : class [Ljava.lang.Object;
    Sinon rebonjour Benjamin, merci de venir encore m'aider, je test ce que tu m'a mis et je vous tiens au courant.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Muchas gracias evry body, voici la solution, ça pourra toujours aider quelqu'un, car à mon avis je suis pas le seul à tomber sur des problèmes comme ça !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Object[] tab = new Object[2];
     try {
        for (int i = 0; i < result.size(); i++) { 
           tab = (Object[])result.get(i);
           System.out.println(tab[0]+" "+tab[1]); 
        }
    }catch (Exception e) {
       e.printStackTrace();
       System.out.println("Erreur dans la boucle");
    };
    A bientot et merci encore.

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 13
    Points
    13
    Par défaut merc!
    je tiens a te remercié mec! j'ai trop galeré avant de savoir que mon tableau contenait des tableaux !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2011, 17h18
  2. faire un calcul d'age dans une requête hibernate
    Par sandrine49 dans le forum Hibernate
    Réponses: 3
    Dernier message: 14/02/2009, 11h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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