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 :

creer un order sur une fonction avec criteria


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut creer un order sur une fonction avec criteria
    bonjour,
    je cherche a ordonner une requete par rapport au resultat d'une procedure qui prend en parametre une fonction .

    cela donnerai à peu pres ca en HQL en ne recuperant que l'objet

    from monObjet where ... Order by distance (monObjet.propriete , "100")

    dans le meme esprit

    from monObjet where ... Order by max(monObjet.propriete)

    mais
    avec des criteria

    Order.asc()
    prend en parametre une proprieté, non un fonction

    pouvez vous m'aider ?

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Order.asc( ... ) prend une String qui représente le nom de la propriété sur laquelle va se faire le tri.
    Si ta fonction retourne ce nom, il n'y a pas de problème...

    Je ne comprends pas bien ce que tu cherches à faire, mais ça ne ressemble pas à un tri mais plutôt à un filtre... Peux-tu expliquer ce que renvoie la fonction ?

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

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut
    bonjour,

    oula non, je parle d'une fonction plsql pas d'une fonction java.

    je veux ordonner par rapport a une fonction

    en sql on fait un ORDER BY length(myChaine )
    par exemple , ca marche aussi en HQL mais pas avec des criterias

    Order.asc('length(proto.name)');

    quand je fait ca, il me gueule dessus propriete est une propriete, normal pas une expression

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maouth Voir le message
    en sql on fait un ORDER BY length(myChaine )
    par exemple , ca marche aussi en HQL mais pas avec des criterias
    Tu plaisantes ???
    La clause order by sql est suivie du nom d'une colonne (ou d'une liste de colonnes).
    On peut accessoirement mettre un numéro qui représente la position de la colonne dans la liste du select (ou dans le format de la table si * est utilisée), mais length(myChaine) !!!
    Ça peut fonctionner si cette longueur est comprise entre 1 et le nombre max de champ du select mais c'est tout !
    C'est quand même du grand n'importe quoi je pense... (sans t'offenser)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Tu plaisantes ???
    La clause order by sql est suivie du nom d'une colonne (ou d'une liste de colonnes).
    On peut accessoirement mettre un numéro qui représente la position de la colonne dans la liste du select (ou dans le format de la table si * est utilisée), mais length(myChaine) !!!
    Ça peut fonctionner si cette longueur est comprise entre 1 et le nombre max de champ du select mais c'est tout !
    C'est quand même du grand n'importe quoi je pense... (sans t'offenser)
    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 *, length(reference) from tiers order by length(reference) desc ;
       id    |  reference   | length 
    ---------+--------------+--------
     1169792 | ABCDEFGHIKLM |     12
     1169800 | ABCDEF       |      6
    (2 rows)
     
    select *, length(reference) from tiers order by length(reference) asc ;
       id    |  reference   | length 
    ---------+--------------+--------
     1169800 | ABCDEF       |      6
     1169792 | ABCDEFGHIKLM |     12
    (2 rows)
    V(result[i]) : (length(reference) > #[columns]) == true

    12 > 3
    6 > 3

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Oui, dans ce cas "length(reference)" représente bien une colonne de la requête

    D'ailleurs, en faisant un test avec MySQL, je découvre que tu peux également faire (sachant que "n'importe quoi" n'existe pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM T_TEST
    order by length("n'importe quoi")
    et ça ne pose pas de problème...
    Dire sur quoi il tri est une autre histoire par contre...

    Bref, en tout cas, je comprends mieux le besoin initial.
    Il faudra passer soit par un createQuery, soit par un createSQLQuery
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Vue sur une fonction avec des paramètres
    Par The F0x dans le forum PL/SQL
    Réponses: 1
    Dernier message: 04/04/2012, 17h00
  2. [PostgreSQL] [PostGreSQL] problème sur une fonction avec connexion
    Par roblescriso dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/06/2008, 18h03
  3. [FLASH 8] Creer/utiliser/réfléchir sur une bibli de fonction externe !?
    Par Lorenzo77 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 16/01/2007, 13h35
  4. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 08h04
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00

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