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 :

curseur et jpa


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut curseur et jpa
    bonjour,
    je dosi extraire de la base des centaines de milliers de lignes pour les mettres dans un outputstream.
    Si j'utilise JPA dans un contexte "normal", je vais charger tout les objects puis faire une boucle sur ces objects et ecrite chaque object dans le outputstream.
    Le risque est d'avoir un overflowMemory exception.

    Donc l'idée est d'utiliser un curseur, mais jpa et curseur ne font pas bon menage a priori.

    Utilisant eclipseLink , voici le code qui devrait permettre de le faire mais une belle exception se lève sans aucune explication. (sur la ligne 'Cursor cursor = q.getResultCursor();
    (J'utilise le JpaManager de eclipseLink)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	JpaQuery q = (JpaQuery) em.createNativeQuery("select * from t_fat_transaction " + where, Transaction.class);
    	setDate(q, qtf);
    	q.setMaxResults(CommonConstant.MAX_TRANSACTION_TRUNCATED);
    	q.setFirstResult(0);
    	Cursor cursor = q.getResultCursor();
    	while (cursor.hasMoreElements()) {
    		Transaction t = (Transaction) cursor.nextElement();
    		os.write(t.getMtKey().getBytes());
    	}
    et l'exception est :
    The container class specified [class java.util.Vector] cannot be used because the container needs to implement class org.eclipse.persistence.queries.Cursor.

    une idée ?
    y'a til une autre méthode pour utiliser les curseur ou pour éviter de tout charger d'un coup ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Par défaut
    Dans ta requête SQL tu peux demander de n'avoir que 100 entrées d'un coup.

    Je ne suis pas spécialiste SQL mais il doit bien y avoir un moyen de faire ça.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut
    ca voudrait qu'il faut que je fasse une boucle eu utilisant le setMaxResults et le setFirstResult du query . C'est sans doute possible mais j'aurai voulu utiliser les curseurs qui sont fait pour ca.

    Je vais essayer.............

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 964
    Par défaut
    Citation Envoyé par jmturc Voir le message
    ca voudrait qu'il faut que je fasse une boucle eu utilisant le setMaxResults et le setFirstResult du query . C'est sans doute possible mais j'aurai voulu utiliser les curseurs qui sont fait pour ca.

    Je vais essayer.............
    ce n'est pas suffisant pour éviter les "out of memory" : il faut aussi faire cette restriction de range dans une nouvelle transaction à chaque fois… et flusher la cache… et bien réfléchir aux stratégies de chargement EAGER/LAZY à chaque nœud du graphe des objets…

Discussions similaires

  1. Position du curseur
    Par gimlithedwarf dans le forum Composants VCL
    Réponses: 2
    Dernier message: 23/08/2002, 00h45
  2. Masquer le curseur en mode MS-DOS
    Par Alex120 dans le forum C
    Réponses: 2
    Dernier message: 10/07/2002, 10h30
  3. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 23h09
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 19h54
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 18h09

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