-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: Requete ne retournant jamais de resultat
PostPosted: Mon Oct 31, 2005 6:05 pm 
Newbie

Joined: Sun Oct 09, 2005 11:47 am
Posts: 9
Location: France
Bonjour

J'utilise hibernate 3.1 dans une application web via le "HibernateDaoSupport" de spring. J'utilise aussi la configuration par annotation Java 5, j'ai un base MySQL et j'utilise le pool de connection apache DBCP.

Dans un DAO, je recherche un utilisateur par son login (typiquement une fenetre de logging) mais, meme en recherchant un utilisateur qui existe bien, je resultat est toujours vide.

Voici le code de mon DAO :
Code:
   public Utilisateur trouverParNomUtilisateur(final String nomUtilisateur) {
      Criteria criteria = this.getSession().createCriteria(Utilisateur.class);
      criteria.add(Restrictions.eq("nomUtilisateur", nomUtilisateur));
      List utilisateurs = criteria.list();

      if (null != utilisateurs && utilisateurs.size() > 0) {
         return (Utilisateur) utilisateurs.get(0);
      } else {
         return null;
      }


Et voici les log hibernate qui correspondent, vous pouvez remarquer que la classe Loader traite 0 ligne dans le ResultSet alors que la meme requete directement sous MySQL retourne bien la bonne ligne.
Code:
22:38:50,864 DEBUG org.hibernate.impl.SessionImpl:271 - opened session at timestamp: 4631735217618944
22:38:50,865 DEBUG org.hibernate.jdbc.AbstractBatcher:309 - about to open PreparedStatement (open PreparedStatements: 0, globally: 1)
22:38:50,865 DEBUG org.hibernate.jdbc.ConnectionManager:309 - opening JDBC connection
22:38:50,878 DEBUG org.hibernate.SQL:344 - select this_.id as id0_0_, this_.nomutilisateur as nomutili2_0_0_, this_.motdepasse as motdepasse0_0_, this_.actif as actif0_0_ from utilisateur this_ where this_.nomutilisateur=?
22:38:50,881 DEBUG org.hibernate.jdbc.AbstractBatcher:413 - preparing statement
22:38:50,883 DEBUG org.hibernate.type.StringType:79 - binding 'admin' to parameter: 1
22:38:50,884 DEBUG org.hibernate.jdbc.AbstractBatcher:325 - about to open ResultSet (open ResultSets: 0, globally: 0)
22:38:50,884 DEBUG org.hibernate.loader.Loader:682 - processing result set
22:38:50,885 DEBUG org.hibernate.loader.Loader:709 - done processing result set (0 rows)
22:38:50,885 DEBUG org.hibernate.jdbc.AbstractBatcher:332 - about to close ResultSet (open ResultSets: 1, globally: 1)
22:38:50,886 DEBUG org.hibernate.jdbc.AbstractBatcher:317 - about to close PreparedStatement (open PreparedStatements: 1, globally: 2)
22:38:50,886 DEBUG org.hibernate.jdbc.AbstractBatcher:459 - closing statement
22:38:50,889 DEBUG org.hibernate.loader.Loader:839 - total objects hydrated: 0
22:38:50,889 DEBUG org.hibernate.engine.StatefulPersistenceContext:784 - initializing non-lazy collections
22:38:50,890 DEBUG org.hibernate.jdbc.JDBCContext:231 - after autocommit
22:38:50,890 DEBUG org.hibernate.impl.SessionImpl:424 - after transaction completion


J'ai egalement essayer de court-circuiter hibernate dans le DAO en recuperant la connexion a la base sous jacente et en faisant la requete moi meme. Le resultat est alors correct puisque je retrouve bien mon utlisanteur.


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 04, 2005 6:25 pm 
Newbie

Joined: Sun Oct 09, 2005 11:47 am
Posts: 9
Location: France
Laisser tomber
Il semblerais que cela soit une histoire d'enodage de caratère puisque le meme code sur un autre serveur MySQL marche parfaitement :-/


Top
 Profile  
 
 Post subject:
PostPosted: Sat Nov 26, 2005 11:08 am 
Newbie

Joined: Sun Oct 09, 2005 11:47 am
Posts: 9
Location: France
Bon,je ne me décourage pas et j'éspère toujours trouver une solution à ce probleme.

J'ai continuer à faire des essais.

J'ai supprimé la restriction de la requete
Code:
criteria.add(Restrictions.eq("nomUtilisateur", nomUtilisateur));
et la requete fonctionne alors parfaitement. Tout la table "utilisateur" est remontée dans la "List" et la méthode me retourne le premier de la table.

J'ai également essayer de faire une requete HQL. J'ai obtenue le même resulatat puisque aucune ligne n'était retournée.

J'ai alors modifié la requete pour la contruire par "concatenation de chaine" plutot que de passer par des parametres bindés. Cela a fonctionné correctement.

Il semblerait donc que le probleme se situe au moment du bind des parametres à la requete.

Y'a t'il des parametres a modifier a ce sujet, et si oui lesquels?

Merci


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 05, 2006 12:41 pm 
Newbie

Joined: Wed Dec 14, 2005 4:38 pm
Posts: 4
t'as trouvé la solution?
Je pense que j'ai le même problème, mais
je suis débutant hibernate et je sais plus quoi faire...

Merci

Locke


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 05, 2006 3:59 pm 
Newbie

Joined: Sun Oct 09, 2005 11:47 am
Posts: 9
Location: France
Aucune solution satisfaisante.

Je suis passé sous PostgreSql. Je n'avais pas de contraite en phase de developpement quant au SGBD.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.