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 :

Pas de résultats sur ma recherche [Criteria]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut Pas de résultats sur ma recherche
    Bonjour,

    Je débute un projet avec Spring et Hibernate, et je commence donc à peine appréhender ces technologies.
    Je suis bloqué pour le moment car je n'arrive pas à récupérer les données de ma BDD avec criteria. Le problème est que je n'ai aucun message d'erreur mais que lorsque ma requête s'exécute la réponse que je reçois est vide alors qu'il y a des entrées dans ma table.

    La requête est toute simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @Transactional(readOnly = true)
    	public boolean checkLogin(String login, String password) {
     
    		Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
    		// create a new criteria
    		Criteria crit = session.createCriteria(User.class);
    		crit.add(Restrictions.like("loginUser", login));
    		crit.add(Restrictions.eq("passwordUser", password));
     
    		User user = (User)crit.uniqueResult();
    		return (user != null);
    	}
    J'ai également essayer de récupérer une liste de tous les utilisateurs avec "crit.list();" mais même là je n'obtient aucune réponse. Je me dit que c'est peut être plutôt un problème de connexion avec ma base mais vu qu'Hibernate a réussi à me générer les model je ne vois pas trop pourquoi il y aurait un problème.

    Donc est ce que quelqu'un aurait une idée ?

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Question bête : est-ce que tu es sûr des utilisateurs / mots de passe testés ?

    Si tu peux tester, essaye déjà de ne pas mettre les condition sur login et password, ce qui validera que ton mapping te permet de remonter quelque chose (en l'occurence, avec criteria.list(), l'ensemble des utilisateurs). À ce moment là tu pourras en 2ème étape valider que dans la liste rapatriée, tu as bien l'utilisateur souhaité avec le bon mot de passe. Ensuite de quoi il faudra comprendre pourquoi ça ne fonctionne pas, mais il faudrait déjà arriver jusque là

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Voila , j'ai retesté en me limitant à une restriction sur le login et en récupérant toutes entrées possédant ce login avec criteria.list() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
    Criteria crit = session.createCriteria(User.class);
    crit.add(Restrictions.like("loginUser", login));
    List users = crit.list();
    Et voilà ce que j'obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    this		UserDaoImpl  (id=68)	
    login		"momo" (id=73)	
    password	"azerty" (id=78)	
    session 	SessionImpl  (id=79)	
    crit		CriteriaImpl  (id=88)	
    users		Collections$EmptyList  (id=92)	
    	modCount		0	
    user		null
    (Je ne sais pas si c'est très parlant, c'est la fenetre des variables en mode debug )

    On peut voir dans les variables le login et mdp et la list retournée qui ne contient aucune entrée...
    Et voila ce que contient ma table :
    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
     
    +---------------------+---------------------+------+-----+---------+----------------+
    | Field               | Type                | Null | Key | Default | Extra          |
    +---------------------+---------------------+------+-----+---------+----------------+
    | id_User             | int(11) unsigned    | NO   | PRI | NULL    | auto_increment |
    | login_User          | varchar(20)         | NO   |     | NULL    |                |
    | password_User       | varchar(20)         | NO   |     | NULL    |                |
    | name_User           | varchar(50)         | YES  |     | NULL    |                |
    | email_User          | varchar(80)         | YES  |     | NULL    |                |
    | ldap_User           | varchar(200)        | YES  |     | NULL    |                |
    | admin_User          | tinyint(3) unsigned | NO   |     | NULL    |                |
    | agent_User          | tinyint(3) unsigned | NO   |     | NULL    |                |
    | client_User         | tinyint(3) unsigned | NO   |     | NULL    |                |
    | projectManager_User | tinyint(3) unsigned | NO   |     | NULL    |                |
    +---------------------+---------------------+------+-----+---------+----------------+
    10 rows in set (0.02 sec)
     
    mysql> SELECT * FROM user_;
    +---------+------------+---------------+-----------+------------+-----------+------------+------------+-------------+---------------------+
    | id_User | login_User | password_User | name_User | email_User | ldap_User | admin_User | agent_User | client_User | projectManager_User |
    +---------+------------+---------------+-----------+------------+-----------+------------+------------+-------------+---------------------+
    |       1 | momo       | azerty        | NULL      | NULL       | NULL      |          0 |          0 |           0 |                   0 |
    |       2 | test       | azerty        | NULL      | NULL       | NULL      |          0 |          0 |           0 |                   0 |
    +---------+------------+---------------+-----------+------------+-----------+------------+------------+-------------+---------------------+
    Donc au final dans la liste rapatriée je n'ai rien du tout, j'ai également essayé sans aucune restriction en faisant juste un .list(), elle reste vide...

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Si sans aucune restriction elle reste vide, c'est bien qu'il y a un souci dans le mapping.

    Est-ce que vous pouvez le fournir ?

    Autre piste pour voir d'où peut venir l'erreur, activer le show_sql dans la configuration hibernate pour voir quelle est la requête générée - et donc pourquoi il n'y a pas d'éléments retournés !

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Ok effectivement, j'allais te demander ce que tu entendais par mapping, et en ouvrant mon petit fichier "hibernate.cfg.xml" je me suis souvenu (j'ai recommencé plusieurs fois mon projet) que normalement il y a une petite balise à rajouter pour mapper les models... (j'ai un peu honte )
    Du coup ça fait un post pas très intéressant mais je pense bien que le problème venait de là et que je peux mettre un petit résolu . Par contre maintenant que j'ai rajouter mon "mapping" j'ai des exceptions qui sont apparues au lancement de l'appli (je suis un peu déçu), mais je pense que ça n'a pas de rapport avec le sujet du post donc je vais chercher un peu .

    Pour résumé, si vous n'avez aucun résultat à votre requête criteria et que ça ne parait pas normal, pensez a vérifier que vous avez bien mis la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mapping class="projet.domain.model.MonModel"/>
    dans le fichier hibernate.cfg

    En tout cas merci Rei Ichido et bonne journée

    (Dis moi si ce n'est pas à ça que tu pensais comme mapping )

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Euh, en fait je ne pensais pas que ça pouvait ne pas planter si la classe n'était pas déclarée ^^ Du coup je pensais plutôt au détail du mapping (par exemple, une jointure avec une autre classe qui ne se réalise jamais) ...
    En tout cas, si tu as résolu l'essentiel de ton problème, c'est déjà bien

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

Discussions similaires

  1. OLS: résultats sur une recherche en reverse
    Par mga_geo dans le forum IGN API Géoportail
    Réponses: 6
    Dernier message: 22/04/2015, 17h36
  2. [WD16] Pas de résultats sur certaine machine + problème date
    Par Raphael1980 dans le forum WinDev
    Réponses: 32
    Dernier message: 21/02/2012, 08h54
  3. [MySQL] pas de résultat sur requete INNER JOIN 3 tables
    Par monlou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2010, 09h49
  4. Pertinence des résultats sur une recherche de Tag
    Par borower dans le forum Optimisations
    Réponses: 9
    Dernier message: 14/04/2009, 23h03
  5. Comparer deux cellules, si pas trouvé résultat sur Feuille 3
    Par MartinezGarcia dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/02/2008, 14h34

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