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 :

Recuperer les derniers tuples enregistrés


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut Recuperer les derniers tuples enregistrés
    Salut,

    Je fais des requêtes successives qui me permettent de récupérer chaque fois 10000 lignes. Je voudrais savoir si c'est possible d'indiquer à Hibernate de récupérer dabord les tuples qui sont stockés dans la fin de la table (qui sont a priori les plus récents).

    En ce moment, je récupéré les tuples a partir de l'index 0 et ainsi de suite. Pourrais je lui indiquer de commencer par le bas ?

    Merci

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Dans une table de base de donnée il n'y a pas de notion de haut et de bas juste une notion d'ordre par rapport à une colonne. Il faut donc que tu utilise un indice dans ta table et que tu fasse un order by dessus dans ta requete.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut
    Salut,

    L'order by ne résout pas le problème dans mon cas. Car si je récupère la première fois 10000 tuples sachant qu'il existe peut être 100.000 le tri va se faire seulement sur les 10.000.

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut
    J'ai bidouillé pour que ca marche.

    Au fait il faut récupérer avant le nombre total de tuples puis faire un petit calcul pour récupérer les bon tuples dans l'ordre. Pour cela je me suis basé sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    query.setFirstResult(firstIndex);
    query.setMaxResults(maxResult);

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 8
    Par défaut
    bonjour,
    j'ai le meme probleme, je voudrais afficher en pemier lieu les enregistrements les plus recents
    pouvez vous metre le tout code permetant de gerer cette requete

    Merci !
    Xavier_

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Par défaut
    oui biensur,

    Avant de commencer il te faut récupérer le nombre total de lignes dans ta table. Tu le feras grâce à une simple requête count(*).
    Avec ce nombre tu pourras commencer à faire tes requêtes :

    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
    nbrTuples = getService().getCount(getConnectedClients());
     
    firstIndex = nbrTuples - MAX_TUPLES;
    do
    {
      result = getService().getAllOrder(getConnectedClients(), firstIndex, MAX_TUPLES);
     
     if ( firstIndex < MAX_TUPLES )
     {
    	MAX_TUPLES = firstIndex;
    	firstIndex = 0;
     }
     else
    	firstIndex -= MAX_TUPLES;
    } while ( result.size() != 0);

    et dans ta query, il faut avoir quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Query query = session.createQuery(request);
    query.setFirstResult(firstIndex);
    query.setMaxResults(maxResult);
    List<Tblorder> tmp = query.list();
    Ca doit ressembler à un truc pareil. Dans mon cas je récupère 10000 lignes par 10000, c'est pour cela que je fait ce ptit calcul.
    Si toi tu voudrais récupérer le tout à la fois, je pense qu'avec un simple order by t'aura les derniers éléments enregistrés (mais il faut avoir une date par exemple pour trié selon celle ci)

    J'espère que j'étais clair

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

Discussions similaires

  1. [AC-2003] Recuperer les derniers enregistrements par date
    Par nougitch dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/05/2013, 22h50
  2. Recuperer le dernier nom enregistré dans la base
    Par Mck698 dans le forum Débuter
    Réponses: 7
    Dernier message: 29/05/2012, 14h39
  3. recuperer les 3 derniers enregistrements
    Par flagodzki dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/09/2007, 17h17
  4. recuperer les dernieres ocurences d'une table
    Par igorzup dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/07/2006, 12h14
  5. Réponses: 2
    Dernier message: 23/05/2006, 18h57

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