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 :

[HQL] Problème sur une requête HQL


Sujet :

Hibernate Java

  1. #1
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut [HQL] Problème sur une requête HQL
    Bonjour à tous,

    J'utilise Hibernate 3.3.2 et j'ai une erreur que je ne comprends pas du tout sur une requête HQL.
    Ma requête va chercher des authorizations, selon certaines critères.

    Voici la requête qui plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT A FROM Authorization A where A.lastVersion = true 
    and UPPER(A.authorizationLbl) LIKE :label 
    and A.authoStatusType.authoStatusCode <> :statusInProgress 
    and A.authoStatusType.authoStatusCode <> :statusDeleted 
    and A.authorizationId in (
       select autho.authorizationId from Authorization autho 
       left outer join autho.facility as faci 
       left outer join faci.deal as dea 
       left outer join dea.confidentialityLevel as conf 
       where faci is null or conf != :confLevel 
    ) 
    order by A.authorizationCode
    L'erreur que j'ai à l'exécution de la requête est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.NullPointerException
        at org.hibernate.hql.ast.tree.FromClause.findIntendedAliasedFromElementBasedOnCrazyJPARequirements(FromClause.java:120)
    Là où je ne comprends pas, c'est que si je vire la requête imbriquée, alors ça passe.
    Si je la laisse mais que je vire le 2e test sur l'authoStatusCode, ça passe.
    Si je remplace mes deux tests authoStatusCode par un not in, ça passe.

    Autrement dit, les requêtes suivantes vont passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A FROM Authorization A where A.lastVersion = true and UPPER(A.authorizationLbl) LIKE :label and A.authoStatusType.authoStatusCode <> :statusInProgress and A.authoStatusType.authoStatusCode <> :statusDeleted order by A.authorizationCode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A FROM Authorization A where A.lastVersion = true and UPPER(A.authorizationLbl) LIKE :label and A.authoStatusType.authoStatusCode <> :statusDeleted and A.authorizationId in (select autho.authorizationId from Authorization autho left outer join autho.facility as faci left outer join faci.deal as dea left outer join dea.confidentialityLevel as conf where faci is null or conf != :confLevel ) order by A.authorizationCode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A FROM Authorization A where A.lastVersion = true and UPPER(A.authorizationLbl) LIKE :label and A.authoStatusType.authoStatusCode not in(:statusInProgress, :statusDeleted) and A.authorizationId in (select autho.authorizationId from Authorization autho left outer join autho.facility as faci left outer join faci.deal as dea left outer join dea.confidentialityLevel as conf where faci is null or conf != :confLevel ) order by A.authorizationCode
    Où est mon erreur ?

    Merci d'avance, là, je sèche vraiment...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il ne manquerait pas l'expression des jonctions dans ton sous-select ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    C'est-à-dire ? Que manquerait-il au juste ?

    J'ai l'impression que le sous-select fonctionne, vu que 2 des 3 requêtes qui passent l'intègre. Il fonctionne sauf quand je me retrouve avec ça avant :
    ... and A.authoStatusType.authoStatusCode <> :statusInProgress and A.authoStatusType.authoStatusCode <> :statusDeleted ...
    Mais cette double condition fonctionne si je ne mets pas le sous-select...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Excuse, autant pour moi...
    Peux-tu remplacer le "!=" par "<>"
    (en théorie, d'après la doc, hibernate comprend les 2 mais bon, j'ai des doutes, d'habitude, c'est "<>"...)

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Hello,

    Merci pour ta réponse.

    J'ai donc tenté en modifiant mes <> par des !=, mais cela ne change rien hélas

    Edit: J'avais mal lu. J'ai donc remplacé mon != par un <>. Mais le résultat reste le même !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Bon, j'ai "résolu" le problème via une optimisation de ma requête (qui était quelque peu bourrine à la base), en virant le sous select. Ca a également eu l'avantage de ne plus lancer l'exception.

    Avec une petite recherche google, on se rend en fait compte qu'il s'agit d'un bug Hibernate qui sera résolu dans la version 3.3 ou 3.2.6...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

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

Discussions similaires

  1. [HQL] Aide sur une requête
    Par lcristin dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/06/2010, 16h54
  2. problème sur une requête mysql
    Par atomikado dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/10/2007, 17h04
  3. [Optimisation] Problème sur une requête UNION.
    Par françois62 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/06/2005, 17h08
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 09h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 02h17

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