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

Persistance des données Java Discussion :

JPA + Hibernate : faire un select avec une null value


Sujet :

Persistance des données Java

  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut JPA + Hibernate : faire un select avec une null value
    Bonjour,

    j'ai une requête nommé : select truc from TableTruc truc where name = :name

    Le problème c'est que si je passe null (setParameter("name", null)) dans le nom ça ne fonctionne pas.
    Je trouve plein d'avertissement (il faut utiliser IS NULL comme dans un requete SQL standard) à ce sujet sur internet mais aucune astuce.

    Comment faire avec un setParameter ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query setParameter(String name, Object val)
    D'après la javadoc, la valeur ne doit pas être null.

    Tu as une surcharge de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query setParameter(String name, Object val, Type type)
    D'après la même doc, la valeur peut être null mais j'ai l'impression que c'est buggé ou que ca sert à autre chose car ca me générait toujours des '=' au lieu des 'is'.
    Enfin tu peux essayer...

    Sinon t'as comme alternative :
    - L'api Criteria (gère le isNull parfaitement)
    - Faire du hql un peu sale ou tu génère la requête différemment selon que ton objet en entrée soit null ou non.

    En gros (code tapé à la volée, pas sur un IDE):

    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
     
    String hqlCommon = "select truc from TableTruc truc where ";
     
    Query query;
     
    if (name!=null)
    {
       hqlCommon += "name = :name";
       query=  session.createQuery(hqlCommon);
       query.setparameter("name", name);
    }
    else
    {
       hqlCommon += "name is null";
       query=  session.createQuery(hqlCommon);
    }
     
    query.list()
    Si ta clause conditionnelle avec un objet null potentiel se trouve en plein milieu de ta requête, tu peux utiliser une chaine de requête templatisé dont tu valoriseras les arguments avec la méthode format(String format, Object... args).
    Ils flottent tous en bas

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Ok, merci.

    J'ai fait la solution que tu donnes (avec le if).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2011, 14h10
  2. SELECT avec une foreign key null
    Par wwave dans le forum Oracle
    Réponses: 1
    Dernier message: 21/01/2010, 16h37
  3. Réponses: 4
    Dernier message: 02/11/2009, 12h28
  4. Faire un select avec une exclusion d'une autre table
    Par polemoss dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2006, 10h10
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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