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 :

Problème:Casting résultat d'une requête Hibernate avec SqlQuery()


Sujet :

Hibernate Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème:Casting résultat d'une requête Hibernate avec SqlQuery()
    Salut,
    Je débute avec Hibernate et Spring et pour le moment j'essaie de créer une méthode de login pour mes utilisateurs ...

    après avoir implémenter les couche dao j'essaie d'effectuer des testes pour voir si tout va bien !

    voila ma méthode dans la classe DaoImpl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public User login(String nom, String password) {
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();		
    		Query req = session.createSQLQuery("SELECT nom, password FROM USERS WHERE nom = :nom and password = :password");
    		req.setParameter("nom", nom)
    		   .setParameter("password", password);		
    		return (User) req.uniqueResult();
    	}
    Quand je teste avec une classe Test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Test {
     
    	public static void main(String[] args) 
    	{
    	    DaoImpl di = new DaoImpl();
                User s = di.login("akson", "aksonbrad");
    	    System.out.println("Salut "+s.getNom()+ " vous avez pu vous identifier !");
     
    	}
    }
    erreur console :

    Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to dao.entites.User
    at dao.DaoImpl.login(DaoImpl.java:47)
    at dao.Test.main(Test.java:24)



    Si quelqu'un pourrait me détecter mon erreur serai gentil
    Merci !

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Très simple, tu crées une requête SQL dans laquelle tu demandes de ramener deux variables, ce que Hibernate instancie comme un Object[] qui va contenir en fait 2 Strings.

    Si tu veux ramener un User, et que ta classe est bien mappée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Query req = session.createQuery("FROM USERS WHERE nom = :nom and password = :password");
    		req.setParameter("nom", nom)
    		   .setParameter("password", password);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Sinon avec une SQLQuery :

    En considérant que le nom de la classe associée à la table USERS soit User et que la classe possède les propriétés "nom", et "password"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Query req = session.createSQLQuery("SELECT nom as {obj.nom}, password as {obj.password} FROM USERS WHERE nom = :nom and password = :password").addEntity("obj",User.class);;
    		req.setParameter("nom", nom)
    		   .setParameter("password", password);		
    		return (User) req.uniqueResult();
    Attention, pour que cela fonctionne il est nécessaire de lister l'ensemble des champs de la classe User dans la requête SQL. Par exemple si la classe User possède un champ id il aurait fallu ajouter "id as {obj.id} dans la clause select.

    Merci de nous tenir informé si résolu.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/10/2010, 07h15
  2. Réponses: 7
    Dernier message: 21/08/2008, 17h44
  3. [SQL] Comparer résultat d'une requête Sql avec php
    Par nicoxweb dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/09/2007, 22h46
  4. [MySQL] [SQL] problème affichage résultat d'une requête
    Par mitmit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/04/2007, 11h14
  5. problème avec les résultats d'une requête select top1
    Par kariiim dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/03/2007, 15h05

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