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 :

Problème requête HQL


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut Problème requête HQL
    Bonjour,

    Actuellement j'utilise cette requête pour afficher un tableau de données. Or je dois afficher les résultats selon la date la plus récente.
    Voici mon code actuel:
    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
     
    package INTetatACAV.etatACAV.metier.manager;
     
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
     
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
     
    import INTutil.HibernateUtil;
     
    public class MifetatACAVManager {
     
    	public List rechercheEtatACAV(Long id_acav, Long numero, String support, Long vl, Double passif, Double actif, Double en_attente){
     
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		Transaction trx = session.beginTransaction();
    		List listEtatACAV = new ArrayList();
    		String requeteHQL="";
    		try{
    listEtatACAV=session.createQuery(" from MIFetatACAV ").list();
    			System.out.println("tete :"+listEtatACAV);
     
     
     
    		}catch (HibernateException he){
    			he.printStackTrace();
    			return null;
    		}catch (Exception e){
    			e.printStackTrace();
    			return null;
    		}finally{
    			session.close();
    		}
    		return listEtatACAV;	
    	}
    }
    Et il m'exécute la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Hibernate: select mifetataca0_.ID_SUPPORT as ID1_22_, mifetataca0_.ID_ACAV_ATTENTE as ID2_22_, mifetataca0_.ID_FLUX as ID3_22_, mifetataca0_.LIBELLE_COURT as LIBELLE4_22_, mifetataca0_.VALEUR as VALEUR22_, mifetataca0_.MONTANT_ACAV_A as MONTANT6_22_, mifetataca0_.MONTANT_ACAV_P as MONTANT7_22_, mifetataca0_.MONTANT_ACAV_ATTENTE as MONTANT8_22_ from ETAT_ACAV_Pk_view mifetataca0_

    Par contre quand je passe par ceci :
    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
     
    package INTetatACAV.etatACAV.metier.manager;
     
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
     
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
     
    import INTutil.HibernateUtil;
     
    public class MifetatACAVManager {
     
    	public List rechercheEtatACAV(Long id_acav, Long numero, String support, Long vl, Double passif, Double actif, Double en_attente){
     
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		Transaction trx = session.beginTransaction();
    		List listEtatACAV = new ArrayList();
    		String select ="";
    		String from = "";
    		String val = "";
    		String requeteHQL="";
    		try{
     
    select	 =		
    				" ID_SUPPORT ,"
    				+" ID_ACAV_ATTENTE ,"
    				+" ID_FLUX ,"	
    				+" LIBELLE_COURT ,"
    				+" VALEUR ,"	
    				+" MONTANT_ACAV_A ,"		
    				+" MONTANT_ACAV_p ,"
    				+" MONTANT_ACAV_ATTENTE "
    			;
    from 	=		 "   FROM  MIFetatACAV"
                ;
    			requeteHQL = select+from+" order by 1";	
     
    			Query query = session.createQuery(requeteHQL);
     
     
     
    			listEtatACAV = query.list();
     
    			System.out.println("tete :"+listEtatACAV);
     
     
     
    		}catch (HibernateException he){
    			he.printStackTrace();
    			return null;
    		}catch (Exception e){
    			e.printStackTrace();
    			return null;
    		}finally{
    			session.close();
    		}
    		return listEtatACAV;	
    	}
    }
    Du coup j'ai ce message d'erreur.
    unexpected token: ID_SUPPORT near line 1, column 2 [ ID_SUPPORT , ID_ACAV_ATTENTE , ID_FLUX , LIBELLE_COURT , VALEUR , MONTANT_ACAV_A , MONTANT_ACAV_p , MONTANT_ACAV_ATTENTE FROM INTetatACAV.etatACAV.metier.entite.MIFetatACAV order by 1]

    Or il me serait plus judicieux de passer par la deuxième méthode afin que je puisse insérer dans le select la date max du champs dateapplication
    une requête comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select ID_SUPPORT, ID_ACAV_ATTENTE, ID_FLUX, LIBELLE_COURT, VALEUR, MONTANT_ACAV_A, MONTANT_ACAV_P, MONTANT_ACAV_ATTENTE , max(dateapplication) from ETAT_ACAV_Pk_view
    Est-ce que quelqu'un voit d'ou peut provenir l'erreur dans la deuxième méthode? Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu as oublié le "select" devant ta liste d'attributs dans ta requête.

    Petite question, dans ta requete, est-ce que tu références bien une classe et ses attributs, ou plutôt une table et ses colonnes ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Tu as oublié le "select" devant ta liste d'attributs dans ta requête.

    Petite question, dans ta requete, est-ce que tu références bien une classe et ses attributs, ou plutôt une table et ses colonnes ?
    bonjour,

    Oui effectivement pour le select, un oubli à force de tester des trucs.
    Pour la deuxième question je référence plutot une table (une vue) et ses colonnes.
    Mais ça ne marche toujours pas.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si tu références une table, il faut passer par un SQLQuery.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Si tu références une table, il faut passer par un SQLQuery.
    Bon et bien j'ai replacé query par SQLquery:
    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
     
    select	 =		" 	SELECT ID_SUPPORT ,"
    				+" ID_ACAV_ATTENTE ,"
    				+" ID_FLUX ,"	
    				+" LIBELLE_COURT ,"
    				+" VALEUR ,"	
    				+" MONTANT_ACAV_A ,"				
    				+" MONTANT_ACAV_p ,"
    				+" MONTANT_ACAV_ATTENTE "
    			;
    from 	=		 "  FROM  MIFetatACAV"
                ;
     
    				SQLQuery sqlQuery = session.createSQLQuery(requeteHQL);
     
    				listEtatACAV = sqlQuery.list();
    résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    2009-01-06 13:32:55,558 [http-8080-1] ERROR - [org.hibernate.AssertionFailure::] an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
    org.hibernate.AssertionFailure: Interceptor.onPrepareStatement() returned null or empty string.
    Oh oh !

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    Eh oui je suis le déroulement de ta galère

    Je sais pas si c un mauvais copier/coller mais dans le dernier post manque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requeteHQL = select+from+" order by 1";
    Je dis ça à cause du: empty string

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Essaie de fermer ta transaction avant ta session.

Discussions similaires

  1. Problème requête HQL avec Like
    Par kakahn dans le forum Hibernate
    Réponses: 3
    Dernier message: 27/03/2013, 15h56
  2. [HQL] Problème écriture requête HQL
    Par Annsen dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/10/2011, 16h33
  3. Problème de count dans une requête HQL
    Par yucf_miagiste dans le forum Hibernate
    Réponses: 0
    Dernier message: 30/11/2010, 14h32
  4. Problème requête HQL
    Par debiancrash dans le forum Hibernate
    Réponses: 3
    Dernier message: 08/10/2010, 16h47
  5. [HQL] Problème sur une requête HQL
    Par romaintaz dans le forum Hibernate
    Réponses: 5
    Dernier message: 20/12/2007, 09h32

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