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 :

Sous-requête en Criteria


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut Sous-requête en Criteria
    Bonjour,

    j'ai une requête à traduire en Criteria, et malgré la doc Hibernate j'y arrive pas des masses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select max(total)
    from
    (
    select sum(voting) as total
    from sportbetuserratingvoting
    group by rating_id
    ) t;
    Quelqu'un aurait-il une idée de comment traduire ça en Criteria ?

  2. #2
    agi
    agi est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Salut,
    Je pense que ça ça peut marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Criteria crit = session.createCriteria(sportbetuserratingvoting.class).setProjection(Projections.projectionList().add(Projections.sum("voting"), "somme_volting").add(Projections.groupProperty("rating_id"))).addOrder(Order.desc("somme_volting"));
    List<Object[]> results = (List<Object[]>)crit.list();
    if (results != null && results.get(0) != null) {
        result = (BigDecimal) results.get(0)[0];
    }
    En fait, tu fais un select sur (somme_volting, rating_id) que tu classes par ordre décroissant sur somme_volting. Le résultat sera le 1er élément de la 1ère ligne de résultat

  3. #3
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    En fait j'avais déjà la requête que tu m'as donnée, sauf le order, qui effectivement me donne le max en premier
    C'est pas le top parce qu'on obtient une liste au lieu d'un seul résultat mais c'est déjà mieux que d'avoir à faire le tri à la mano en java...
    Merci à+

  4. #4
    agi
    agi est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Je viens de voir qu'on pouvait spécifier un setMaxResult() ici aussi.

    Essaye comme ça, ça peut marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... .addOrder(Order.desc("somme_volting")).setMaxResults(1);

  5. #5
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    ouep je viens d'essayer ça marche nickel
    encore merci !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2013, 06h46
  2. comment transformer sous requête en Criteria
    Par badreddine540 dans le forum Hibernate
    Réponses: 3
    Dernier message: 30/09/2009, 14h56
  3. [Criteria] Sous-requête (requête dans une requête)
    Par thibane dans le forum Hibernate
    Réponses: 3
    Dernier message: 12/04/2008, 21h07
  4. [Hibernate]Traduire une sous requète en criteria?
    Par djodjo dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/06/2006, 13h53
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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