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

JPA Java Discussion :

Lazy Loading et pagination


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut Lazy Loading et pagination
    Bonjour,

    J'aurais besoin d'une confirmation:

    J'ai 2 entités : User et PostIt. User possède plusieurs PostIt et un PostIt appartient à un User.

    Avec user.getPostIts() je récupère la liste des postits de l'utilisateur via lazy loading.

    Est il possible de faire user.getPostIts(X,Y) pour avoir les postit entre X et Y, afin de faire une pagination? Mais je souhaite que cela se fasse dans la requête et pas prendre les X,Y éléments de la liste complète retournée par la requête.

    Suis je clair dans ma demande?

    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par selenar Voir le message
    Bonjour,

    J'aurais besoin d'une confirmation:

    J'ai 2 entités : User et PostIt. User possède plusieurs PostIt et un PostIt appartient à un User.

    Avec user.getPostIts() je récupère la liste des postits de l'utilisateur via lazy loading.

    Est il possible de faire user.getPostIts(X,Y) pour avoir les postit entre X et Y, afin de faire une pagination? Mais je souhaite que cela se fasse dans la requête et pas prendre les X,Y éléments de la liste complète retournée par la requête.

    Suis je clair dans ma demande?

    Merci.
    Non pas très clair . X , Y représentent quoi? les positions dans ta liste de PostIt? Si oui cette liste est elle triée ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut
    Bonjour,

    Effectivement ce sont les bornes minimales et maximales.

    Je voudrais avoir une pagination sur les postits d'un utilisateur.

    Pour faire plus simple, enfin j'espère :

    Pour avoir la liste des postit d'un utilisateur, avec un DAO et Hibernate je fait :

    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
     
    public List<PostIt> findAll(String sortPropertyName, SortOrder order, int start, int count, String filter, String... columns) {
    		Criteria criteria = getSession().createCriteria(PostIt.class);
    		if (filter != null && filter.trim().length() != 0){
    			Disjunction disj = Restrictions.disjunction();
    			for (String column : columns)
    				disj.add(Restrictions.ilike(column, filter));
    			criteria.add(disj);
    		}
     
    		if (start != -1){
    			criteria.setFirstResult(start);
    			criteria.setMaxResults(count);
    		}
     
    		if (sortPropertyName != null && sortPropertyName.trim().length() != 0){
    			criteria.addOrder(order == SortOrder.ASCENDING ? Order.asc(sortPropertyName) : Order.desc(sortPropertyName));
    		}
    		return criteria.list();
    	}
    Et je voudrais savoir si c'est possible de faire un peu pareil en faisant user.getPostits(), sans avoir à faire de boucle pour prendre uniquement les postits situés entre X (debut) et Y (fin).

    Sinon, je me servirais du DAO mais comme on a la liste à disposition dans le bean de l'utilisateur, je voulait l'utiliser.

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Non tu peux pas à ma connaissance. T'as pas trop la maison sur la collection récupérée, à part imposer un ordre de tri dans ton mapping sur la collection, tu peux pas faire grand chose. Etu seras obligé soit de retravailler la collection, soit de passer par une requête.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Par défaut
    C'est bien ce qu'il me semblait.

    Merci pour ta réponse.

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

Discussions similaires

  1. spring2 hibernate3 : lazy loading
    Par fxonline dans le forum Hibernate
    Réponses: 9
    Dernier message: 10/02/2007, 18h56
  2. Lazy loading sur component
    Par El Saigneur dans le forum Hibernate
    Réponses: 2
    Dernier message: 03/11/2006, 10h30
  3. Lazy loading et fermeture de session hibernate
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/07/2006, 13h08
  4. [hibernate] problème pour desactiver le lazy loading
    Par agougeon dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/03/2006, 11h20
  5. [HIBERNATE 3]Lazy loading
    Par SEMPERE Benjamin dans le forum Hibernate
    Réponses: 11
    Dernier message: 08/02/2006, 22h40

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