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 :

Insert en masse dans une table avec Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut Insert en masse dans une table avec Hibernate
    bonjour a tous et toutes
    j ai un soucis avec hibernate ou autres je sais pas trops
    dans une application web j ai un bean qui declenche un scheduler quartz
    le job doit faire un select avec jointure sur plusieur table et un insert de masse dans une autres table
    je n ai pas d erreur a l éxecution mais un résultat assez inatendu ou pas.
    le job insere pas plus de 2000 lignes pourtant ja sais qu il y a plus de 20000 lignes a inserées voila le code
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
     
    public class MyJob implements org.quartz.Job{
     
        //static final Long timepassed=new java.util.Date().getTime();
        Long l=0L;
         @SuppressWarnings("unchecked")
        public void execute(JobExecutionContext context)
         throws JobExecutionException{
             org.hibernate.Session sess0=com.bean.Connection.getSessionFactoryHibernate().openSession(com.bean.Connection.conn);
             try
             {
             sess0.getNamedQuery("truncimpaye").executeUpdate();
             }
             catch(Exception ez123)
             {
                 try
                 {
                 sess0.createSQLQuery("truncate table impaye").executeUpdate();
                 }
                 catch(Exception ed123){ed123.printStackTrace();}
             }
     
             String query=" select distinct hono.honotype,YEAR(hono.honodatefacture),doss.dossnum,payeur.personne.admin.nom ,compa.personne.admin.nom,compa.adrdossreference1,gesti.personne.admin.nom,inter.personne.admin.nom,manda.personne.admin.nom "+
              " ,assur.personne.admin.nom,assur.adrdossnumpolice,doss.dossdatemission,hono.honototalttc,hono.honototalttc - hono.honomtregle as solde,hono.honodatefacture,hono.hononumfacture "+
              " from Honoraire hono "+
              " left join hono.dossier doss "+
              " left join doss.honoraires dosspayeur "+
              " left JOIN dosspayeur.payeurs payeur "+
              " left join payeur.honoraire payeurhono "+
              " left join payeurhono.dossier dossier "+
              " left join dossier.adrdossiers compa with(compa.typeperscode='COMPA' and compa.adrdossnumtiers is null) "+
              " left join compa.dossier dossiergesti "+
              " left join dossiergesti.adrdossiers gesti with(gesti.typeperscode='GESTI' and gesti.adrdossnumtiers is null) "+
              " left join gesti.dossier dossierinter "+
              " left join dossierinter.adrdossiers inter with(inter.typeperscode='INTER' and inter.adrdossnumtiers is null) "+
              " left join inter.dossier dossiermandant "+
              " left join dossiermandant.adrdossiers  manda with(manda.typeperscode='MANDA' and manda.adrdossnumtiers is null) "+
              " left join manda.dossier dossierassur "+
              " left join dossierassur.adrdossiers assur with(assur.typeperscode='ASSUR' and assur.adrdossnumtiers is null) "+
              " WHERE  (hono.honototalttc-hono.honomtregle>0 or hono.honotype='AV') and hono.honodatefacture between '2009-01-01' AND '2010-01-01'";
     
             String querycount=" select distinct count(*) "+
              " from Honoraire hono "+
              " left join hono.dossier doss "+
              " left join doss.honoraires dosspayeur "+
              " left JOIN dosspayeur.payeurs payeur "+
              " left join payeur.honoraire payeurhono "+
              " left join payeurhono.dossier dossier "+
              " left join dossier.adrdossiers compa with(compa.typeperscode='COMPA' and compa.adrdossnumtiers is null) "+
              " left join compa.dossier dossiergesti "+
              " left join dossiergesti.adrdossiers gesti with(gesti.typeperscode='GESTI' and gesti.adrdossnumtiers is null) "+
              " left join gesti.dossier dossierinter "+
              " left join dossierinter.adrdossiers inter with(inter.typeperscode='INTER' and inter.adrdossnumtiers is null) "+
              " left join inter.dossier dossiermandant "+
              " left join dossiermandant.adrdossiers  manda with(manda.typeperscode='MANDA' and manda.adrdossnumtiers is null) "+
              " left join manda.dossier dossierassur "+
              " left join dossierassur.adrdossiers assur with(assur.typeperscode='ASSUR' and assur.adrdossnumtiers is null) "+
              " WHERE  (hono.honototalttc-hono.honomtregle>0 or hono.honotype='AV') and hono.honodatefacture between '2009-01-01' AND '2010-01-01'";
     
            Long count=(Long)sess0.createQuery(querycount).uniqueResult();
            sess0.close();
            int count2=(int) (count/1000L);
            System.out.print("#######"+count+"######");
     
     
            org.hibernate.Session sess=com.bean.Connection.getSessionFactoryHibernate().openSession(com.bean.Connection.conn);
     
            //java.util.List<Object[]> listeobjet=new java.util.ArrayList<Object[]>();
            java.util.Iterator<Object[]> listobjet=sess.createQuery(query).iterate();
     
            System.out.print("###########################");
            com.hibernate.Impaye impaye=new com.hibernate.Impaye();
            while(listobjet.hasNext())
            {    
                    sess.beginTransaction();
                    Object[] o=listobjet.next();
                    impaye.setId(new com.hibernate.ImpayeId(
                            (String)o[3],
                            (String)o[15],
                            (String)o[0],
                            null,
                            (String)o[2],
                            (Integer)o[1],
                            (String)o[5],
                            null,
                            (String)o[4],
                            (String)o[6],
                            (String)o[8],
                            (String)o[7],
                            (String)o[9],
                            (String)o[10],
                            (java.util.Date)o[11],
                            o[12]!=null?Double.valueOf(((Float)o[12]).toString()):null,
                            (java.util.Date)o[14],
                            o[13]!=null?Double.valueOf(((Float)o[13]).toString()):null,
                            null));
                    sess.save(impaye);
                    sess.flush();
                    sess.getTransaction().commit();
                    sess.evict(impaye);
     
     
                }
     
         sess.clear();
            sess.close();
     
     
         }
    merci de votre implication cordialement

  2. #2
    Membre habitué Avatar de zolive
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 152
    Points : 137
    Points
    137
    Par défaut
    Je ne pense pas qu'on puisse t'aider avec juste ces renseignements. Cela dépend quand même fortement du peuplement de ta base.
    As tu essayé de te faire une base peuplé simplement pour vérifier ta requete ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Points : 81
    Points
    81
    Par défaut merci de ta reponse
    je vais voir ca demain j'essairai de remplir ma table avec une liste de plusieur millier objet merci pour cette piste.
    je vais aussi essaye ma requete en sql normal sous commade mysql pour voir
    merci encore je te tiens au courant

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/07/2013, 11h03
  2. Insertion globale dans une table avec Hibernate
    Par sandrine49 dans le forum Hibernate
    Réponses: 6
    Dernier message: 06/05/2010, 16h19
  3. pb Insertion d'éléments dans une table avec mySql++
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 24/02/2008, 00h39
  4. [ASE12.5]Insertion en masse dans une table
    Par jfmerveille dans le forum Adaptive Server Enterprise
    Réponses: 6
    Dernier message: 03/12/2007, 15h14
  5. Insertion en masse dans une table
    Par scheu dans le forum Administration
    Réponses: 5
    Dernier message: 04/10/2007, 17h33

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