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 :

[Débutant] Requête HQL : le joker %


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par défaut [Débutant] Requête HQL : le joker %
    Bonjour,

    Pour ceux qui n'ont pas vu mes précédents messages, je réalise actuellement un site intranet. Aujourd'hui se pose le problème d'une requête HQL. Je dispose sur une page JSP d'une liste de personnes avec un cadre contenant des champs de recherche (nom, prenom, competences) accompagnés d'un bouton rechercher. Quand je clique sur le bouton cela déclenche la méthode doPost() de ma servlet dans laquelle j'effectue la requête suivante pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query myQuery = session.createQuery("Select ab From Abonne ab where ab.abonneNom like '"+nom+"'");
    nom étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String nom = request.getParameter("txtNom");
    Le problème qui se pose est quand le nom = "". J'ai en retour l'exception suivante :

    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
    4594 [http-8081-Processor25] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ProjectTest].[servletContacts]  - "Servlet.service()" pour la servlet servletContacts a généré une exception
    java.lang.NullPointerException
    	at servlet.ServletContacts.doPost(ServletContacts.java:100)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Unknown Source)
    Je comprends donc bien qu'il ne veut pas de la chaîne vide dans la requête. J'ai essayé ça avant d'effectuer ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (nom != null) {
    	if (nom.equals("")) {
    		nom = "%";					
    	} else {
    		nom.replace("*","%");
    	}
    } else {				
    	nom = "%";				
    }
    J'ai même tenté en doublant les "%" mais rien n'y fait. Auriez-vous une idée svp comme Joker pour ma requête pour une chaine vide ?

    PS : la ligne : nom.replace("*","%"); est pour remplacer les * tapées par l'utilisateur.

    Merci d'avance et bon appétit.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    La query est pourtant valide en HQL... je me demande si l'erreur ne viendrait pas d'ailleur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.NullPointerException at servlet.ServletContacts.doPost(ServletContacts.java:100)
    Il y a quoi a la ligne 100 de ServletContacts.java ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par défaut
    En effet ma requête est correcte avec un "%" . Je viens de retrouver l'erreur, j'avais passé cette ligne en commentaire dans init() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session = HibernateUtil.currentSession();
    Je n'ai pas besoin de cet init() dans ma servlet et du coup j'avais tout passé en commentaires dans ma fonction . Une demi-heure de perdue sur une connerie....j'adore la prog

    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par défaut
    Citation Envoyé par pseudocode
    La query est pourtant valide en HQL... je me demande si l'erreur ne viendrait pas d'ailleur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.NullPointerException at servlet.ServletContacts.doPost(ServletContacts.java:100)
    Il y a quoi a la ligne 100 de ServletContacts.java ?

    Au fait la lgine 100, était la ligne de ma Query mais vu que session était null...

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

Discussions similaires

  1. [Débutant] Requête SELECT avec max et sous-requête
    Par joefou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 14h28
  2. [HIBERNATE] - Débutant - Requête croisées
    Par charlot44 dans le forum Hibernate
    Réponses: 19
    Dernier message: 14/06/2005, 16h06
  3. [Procs stockées] [Débutant] Requête dynamique
    Par stailer dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2005, 14h29
  4. [débutant] requête
    Par ber_jp dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/06/2004, 20h38

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