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 : problème de tri


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 166
    Points : 112
    Points
    112
    Par défaut HIbernate : problème de tri
    Bonjour

    Je ne suis pas très douée en hibernate, mais ce que je veux faire parait pourtant simple : trier mes résultats en ASC ou DESC selon une colonne donnée !
    Pourtant ça ne marche pas, que je sois en ASC ou DESC j'ai invariablement le même résultat....
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String hqlQuery = "FROM " + m_tableName + " where priority_id=:priority order by :sortparam";
    if (!p_ascending)
    	hqlQuery = hqlQuery + " DESC";
    Query query = m_em.createQuery(hqlQuery);
    query.setParameter("priority", p_priority.getId());
    query.setParameter("sortparam", p_sortParam);
    List<Ticket> res =  query.getResultList();
    System.out.println(hqlQuery);
    System.out.println("sortparam : " + p_sortParam);
    System.out.println(res.get(0).getId());
    System.out.println(res.get(1).getId());
    return res;
    la sortie en ASC :
    FROM ticket where priority_id=:priority order by :sortparam
    sortparam : id
    ticket/5
    ticket/7

    la sortie en DESC
    FROM ticket where priority_id=:priority order by :sortparam DESC
    sortparam : id
    ticket/5
    ticket/7

    Y a t-il une subtilité que j'ignore sur les tris en HQL ?

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    essaies un peu cette requete et dis nous si c´est OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      String hqlQuery = "FROM " + m_tableName + " tab where tab.priority_id=:priority order by tab.id asc";
    //if (!p_ascending)
    //	hqlQuery = hqlQuery + " DESC";
    Query query = m_em.createQuery(hqlQuery);
    query.setParameter("priority", p_priority.getId());
    //query.setParameter("sortparam", p_sortParam);
    List<Ticket> res =  query.getResultList();
    System.out.println(hqlQuery);
    System.out.println("sortparam : " + p_sortParam);
    System.out.println(res.get(0).getId());
    System.out.println(res.get(1).getId());
    return res;
    eric

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 166
    Points : 112
    Points
    112
    Par défaut
    Bonjour
    Oui ça marche mais c'est moins joli !
    Du coup j'ai fait des recherches et j'ai vu qu'on pouvait faire ça de manière plus élégante avec des criterias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		Session session = m_em.unwrap(Session.class);
    		Criteria crit = session.createCriteria(Ticket.class);
    		if (p_ascending)
    			crit.addOrder(Order.asc(p_sortParam));
    		else
    			crit.addOrder(Order.desc(p_sortParam));
    		crit.setFirstResult(p_first);
    		crit.setMaxResults(p_nb);
    		crit.add(Restrictions.eq("priority", p_priority));
    		List res = crit.list();
    C'est mieux comme ça non ?

  4. #4
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Citation Envoyé par felix79 Voir le message
    C'est mieux comme ça non ?
    Oui c'est mieux, mais c'est toi qui a commencé avec du HQL :p
    (les criterion c'est bien)

    Sinon, pour information, le remplacement des "variables" dans ta requête ne peut concerner que les valeurs et pas les noms de colonne/table/fonctions.
    Tu peux faire une requête paramétrée du type "where maColonne = :valeur" mais tu ne peux pas faire "where :maColonne = valeur".

    Le moteur interprète ta requête pour la transformer en requête SQL, et cette étape se fait AVANT de passer les paramètres. Le code sql qui sera généré fonctionnera si tu as de la chance, mais ça ne donnera jamais le résultat voulu (ou alors tu as vraiment beaucoup de chance).
    Je ne suis pas mort, j'ai du travail !

Discussions similaires

  1. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  2. [plugin hibernate] problème d'installation
    Par slymira dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/06/2005, 13h06
  3. [TToolBar] Problème de tri
    Par titiyo dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/09/2004, 09h21
  4. [Collections] Problème de tri
    Par feti2004 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 03/08/2004, 16h45
  5. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 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