Précédent   Forum des professionnels en informatique > Java > Général Java > Persistance > JPA
JPA Forum d'entraide sur l'API de persistance JPA (Java Persistence API)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 18h01   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 8
Points : 8
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.
selenar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 09h00   #2
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
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 258
Points : 2 578
Points : 2 578
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 ?
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h27   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 8
Points : 8
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 :
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
selenar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h42   #4
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 258
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 258
Points : 2 578
Points : 2 578
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.
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h46   #5
Invité régulier
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 8
Points : 8
C'est bien ce qu'il me semblait.

Merci pour ta réponse.
selenar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web