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 :

[hibernate] undefined alias


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut [hibernate] undefined alias
    Bonjour,

    je dois réaliser des décomptes mensuels via la requête HQL suivante qui fonctionne très bien pour le calcul des sommes hors-taxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select 
      new xxx.yyy.DecompteMensuelEnveloppe(
        sum(art.totalHT)),
        art.bonCommande.enveloppe,
        Month(art.bonCommande.dateEmission)
      ) 
    from 
        ArticleBDC art join art.TVA tva 
    where 
        art.annul = 0 
        and art.bonCommande.annul = 0 
        and Year(art.bonCommande.dateEmission)=2006 
        group by art.bonCommande.enveloppe,Month(art.bonCommande.dateEmission)
    Dès que je veux passer au calcul du TTC, je me retrouve avec un "undefined alias : art" alors que ma requête comporte bien des alias correctement définis (enfin, je le pensais )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    select 
      new xxx.yyy.DecompteMensuelEnveloppe(
        sum(art.totalHT*tva.facteurTVA),
        art.bonCommande.enveloppe ,
         Month(art.bonCommande.dateEmission)
      )
    from 
       ArticleBDC art join art.TVA tva 
    where 
       art.annul = 0 
       and art.bonCommande.annul = 0 
       and Year(art.bonCommande.dateEmission)=2006 
    group by art.bonCommande.enveloppe, Month(art.bonCommande.dateEmission)
    Voici mes fichiers de mapping :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <class name="Article" table="article">
    		...
    		...
     
    		<property
    			column="prix_unit_HT"
    			name="prixUnitHT"
    			not-null="true"
    			type="float"
    		 />
    		<property
    			column="remise"
    			name="remise"
    			not-null="true"
    			type="float"
    		 />
    		<property
    			column="quantite"
    			name="quantite"
    			not-null="true"
    			type="float"
    		 />
     
    		 <property name="totalHT"
    			 type="float"
    			 formula="prix_unit_HT*quantite*(1-remise/100)"/>
     
     
    		<many-to-one
    			cascade="none"
    			class="TVA"
    			column="id_TVA"
    			name="TVA"
    		 />
     
     
    		  ...
     
    		  ...
      </class>
     
     
    <class
    		name="TVA"
    		table="taux_TVA"
     
    	>
    	...
    	...
    	<property
    		name="tauxTVA"
    		column="taux_TVA"
    		type="float"
    		not-null="true"
    	/>
     
    	<property
    		name="facteurTVA"
    		type="float"
    		formula="1+taux_TVA/100"
    	/>
    	...		
    	...		
     
     
    </class>
    Je sèche un peu...si qq'un a une petite idée, je suis preneur.
    Merci par avance !

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    Par défaut
    C'est quoi articleBDC ? Ta requête ne serait pas en notation objets... ? Mélangerais-tu pas objets et SQL ? Matte exemples sur doc Hibernate... pour la syntaxe des alias.

    Apparememnt, ça plante plutôt à cause de ton opération de multiplication !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Merci pour ta réponse.
    En fait, ArticleBDC est une sous-classe de Article, ce qui ne devrait pas poser de pb à Hibernate.
    Cela dit, j'ai en effet l'impression que la multiplication pose pb, mais je vois vraiment pas pourquoi ...

    Edit : en modifiant ma requête HQL pour simplifier le problème, le message relatif à l'alias dispararait
    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
     
    select 
      sum(art.totalHT * art.TVA.tauxTVA), 
      art.bonCommande.enveloppe , 
      Month(art.bonCommande.dateEmission) 
    from 
      xxx.yyy.ArticleBDC as art
    where 
      art.annul = 0 
      and art.bonCommande.annul = 0 
      and Year(art.bonCommande.dateEmission)=2006  
      and art.bonCommande.enveloppe.listeEnveloppes.affectation= 'CC' 
    group by 
      art.bonCommande.enveloppe, 
      Month(art.bonCommande.dateEmission)
    La requête SQL générée fonctionne à merveille quand je la teste "manuellement" dans MySQL...mais Hibernate me signale à présent une java.sql.SQLException: Column 'x3_0_' not found.
    Après recherche, cela est répertorié comme bug dans hibernate 2.x, fixé dans à partir de la version 3.0.1.
    Cf par ici
    "sujet résolu"


    Edit, le retour : je confirme, après migration Hibernate v2.8 => v3.1 (moins pénible que prévue ), tout va très bien et ma requête HQL tourne très bien.

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

Discussions similaires

  1. coutn(*) hql hibernate iterate is undefined
    Par Altenide dans le forum Persistance des données
    Réponses: 2
    Dernier message: 05/07/2011, 16h52
  2. Hibernate getCurrentSessionFactory() undefined
    Par maestroENSI dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/04/2011, 17h16
  3. requete hibernate et alias
    Par erox44 dans le forum Hibernate
    Réponses: 0
    Dernier message: 10/07/2009, 15h48
  4. [Hibernate]Alias et projections
    Par kausa dans le forum Hibernate
    Réponses: 5
    Dernier message: 04/12/2007, 16h14
  5. [HQL]QueryException : undefined alias
    Par brice.antoine dans le forum Hibernate
    Réponses: 5
    Dernier message: 31/03/2004, 18h51

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