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 :

QUERY HIBERNATE qui boucle indefiniment


Sujet :

Hibernate Java

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut QUERY HIBERNATE qui boucle indefiniment
    Bonjour,
    j'utilise HIBERNATE avec ORACLE dans mon application. J'ai une vue dont le nom est VW_LABORATORY_TESTS. La partie de code SQL pour laquelle j'ai un probleme est la suivante :
    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
     
    select '#' ||
    (case when (select max(idat1.VALUE) from itemdata idat1, itemsequences iseq1, items i1
    where idat1.ITEM_GROUP_DATA_ID=igdat.ITEM_GROUP_DATA_ID
    and i1.ITEM_ID=iseq1.ITEM_ID
    and iseq1.ITEM_SEQUENCE_ID=idat1.ITEM_SEQUENCE_ID
    and ((i1.SDS_VAR_NAME like '%' || ';LBDTC;' || '%') or (i1.SDS_VAR_NAME like 'LBDTC;' || '%') or (i1.SDS_VAR_NAME like '%' || ';LBDTC') or (i1.SDS_VAR_NAME = 'LBDTC'))
    and i1.ITEMDATA_TYPE_ID=5)
    is NULL then (case when ((select max(idat1.VALUE) from itemdata idat1, itemsequences iseq1, items i1
                           where idat1.ITEM_GROUP_DATA_ID=igdat.ITEM_GROUP_DATA_ID
                           and i1.ITEM_ID=iseq1.ITEM_ID
                           and iseq1.ITEM_SEQUENCE_ID=idat1.ITEM_SEQUENCE_ID
                           and ((i1.SDS_VAR_NAME like '%' || ';LBDTC;' || '%') or (i1.SDS_VAR_NAME like 'LBDTC;' || '%') or (i1.SDS_VAR_NAME like '%' || ';LBDTC') or (i1.SDS_VAR_NAME = 'LBDTC'))
                           and i1.ITEMDATA_TYPE_ID=4)           ||       
                                                                   (select max (idat1.VALUE) from itemdata idat1, itemsequences iseq1, items i1
                                                                    where idat1.ITEM_GROUP_DATA_ID=igdat.ITEM_GROUP_DATA_ID
                                                                    and i1.ITEM_ID=iseq1.ITEM_ID
                                                                    and iseq1.ITEM_SEQUENCE_ID=idat1.ITEM_SEQUENCE_ID
                                                                    and ((i1.SDS_VAR_NAME like '%' || ';LBDTC;' || '%') or (i1.SDS_VAR_NAME like 'LBDTC;' || '%') or (i1.SDS_VAR_NAME like '%' || ';LBDTC') or (i1.SDS_VAR_NAME = 'LBDTC'))
                                                                    and i1.ITEMDATA_TYPE_ID=3)) 
                        is NULL then (case when CAST('null' AS VARCHAR(255))
                                      = 'null' then CAST('     ' AS VARCHAR(255))
                                      else CAST('null' AS VARCHAR(255)) end)
                        else CAST(((select max(idat1.VALUE) from itemdata idat1, itemsequences iseq1, items i1
                               where idat1.ITEM_GROUP_DATA_ID=igdat.ITEM_GROUP_DATA_ID
                               and i1.ITEM_ID=iseq1.ITEM_ID
                               and iseq1.ITEM_SEQUENCE_ID=idat1.ITEM_SEQUENCE_ID
                               and ((i1.SDS_VAR_NAME like '%' || ';LBDTC;' || '%') or (i1.SDS_VAR_NAME like 'LBDTC;' || '%') or (i1.SDS_VAR_NAME like '%' || ';LBDTC') or (i1.SDS_VAR_NAME = 'LBDTC'))
                               and i1.ITEMDATA_TYPE_ID=4) || 
                                                                   (select max (idat1.VALUE) from itemdata idat1, itemsequences iseq1, items i1
                                                                    where idat1.ITEM_GROUP_DATA_ID=igdat.ITEM_GROUP_DATA_ID
                                                                    and i1.ITEM_ID=iseq1.ITEM_ID
                                                                    and iseq1.ITEM_SEQUENCE_ID=idat1.ITEM_SEQUENCE_ID
                                                                    and ((i1.SDS_VAR_NAME like '%' || ';LBDTC;' || '%') or (i1.SDS_VAR_NAME like 'LBDTC;' || '%') or (i1.SDS_VAR_NAME like '%' || ';LBDTC') or (i1.SDS_VAR_NAME = 'LBDTC'))
                                                                    and i1.ITEMDATA_TYPE_ID=3))AS VARCHAR(255)) end) 
    else (select max(idat1.VALUE) from itemdata idat1, itemsequences iseq1, items i1
    where idat1.ITEM_GROUP_DATA_ID=igdat.ITEM_GROUP_DATA_ID
    and i1.ITEM_ID=iseq1.ITEM_ID
    and iseq1.ITEM_SEQUENCE_ID=idat1.ITEM_SEQUENCE_ID
    and ((i1.SDS_VAR_NAME like '%' || ';LBDTC;' || '%') or (i1.SDS_VAR_NAME like 'LBDTC;' || '%') or (i1.SDS_VAR_NAME like '%' || ';LBDTC') or (i1.SDS_VAR_NAME = 'LBDTC'))
    and i1.ITEMDATA_TYPE_ID=5) end) || '#'
     LBDTC
     
    from
    itemgroupdata igdat,
    formdata fdat,
    eventdata edat,
    subjects sbj,
    projects s,
    sites si,
    addresses ad,
    countries c,
    (select idat2.ITEM_GROUP_DATA_ID from items i2,itemsequences iseq2, itemdata idat2 where
    i2.ITEM_ID=iseq2.ITEM_ID and iseq2.ITEM_SEQUENCE_ID=idat2.ITEM_SEQUENCE_ID and i2.SDS_VAR_NAME like '%' || 'LBTESTCD' || '%') res
    where igdat.ITEM_GROUP_DATA_ID=res.ITEM_GROUP_DATA_ID
    and igdat.FORM_DATA_ID=fdat.FORM_DATA_ID
    and fdat.EVENT_DATA_ID=edat.EVENT_DATA_ID
    and edat.SUBJECT_ID=sbj.SUBJECT_ID
    and sbj.SITE_ID=si.SITE_ID
    and sbj.PROJECT_ID=s.PROJECT_ID
    and si.ADDRESS_ID=ad.ADDRESS_ID(+)
    and ad.COUNTRY_ID=c.ID(+)
    and sbj.QA='Y'
    and s.PROJECT_ID=42264;
    Quand j'execute cette requete avec SQL DEVELOPPER, tout se passe tres bien. J'obtiens 49 lignes de resultats :

    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
     
    LBDTC                                                                                                                                                                                                                                                             
    ----------------------------
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #12/14/2007 08:45#                                                                                                                                                                                                                                                
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #     #                                                                                                                                                                                                                                                           
    #12/30/2007 09:00#                                                                                                                                                                                                                                                
    #12/30/2007 09:00#                                                                                                                                                                                                                                                
    #12/30/2007 09:00#                                                                                                                                                                                                                                                
    #12/30/2007 09:20#                                                                                                                                                                                                                                                
     
    49 rows selected
    Dans mon application,, j'essaye de recuperer les resultats par une query HIBERNATE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ligne 1:String sql="select LBDTC from VW_LABORATORY_TESTS";
    ligne 2:Query reportQuery =  getSession().createSQLQuery(sql);
    ligne 3:List<Object> result = reportQuery.list();
    Et les logs de mon application m'indiquent qu'à la ligne 3, les 20 premiers lignes de resultats sont charges et apres le programme boucle indefiniment sans me donner de resultats. Il n'y a pas de stack trace. Le programme tourne juste indefiniment sans me donner aucune information. J'ajoute que les lignes de resultats semblent etre chargees 10 par 10. C'est a dire que dans les logs je remarque que les 10 premiers resultats sont charges, puis ensuite les 10 suivants et ensuite plus rien ne se passe.
    Je ne comprend pas pourquoi ma requete passe avec SQL DEVELOPPER et pas avec ma query HIBERNATE.
    Est-ce que quelqu'un peut me donner des indices pour resoudre ce probleme ? Merci à l'avance.

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Je crois que c un pb de cache, il y a une histoire de flush, clear à faire tous les n paquets ...

    regardes ce lien, je crois que c bien expliqué:

    http://www2.lifl.fr/~durif/bdd/cours...hibernate.html

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Par défaut
    Merci Fench pour cette piste, en flushant et en cleanant la session tous les n result, ca passe.

    Je travaille avec flamant sur le meme projet et voici donc la solution (temporaire) a notre probleme.

    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
     
    Query reportQuery =  session.createSQLQuery(new String(sql));
    int indexResult=15;
    reportQuery.setMaxResults(indexResult);
    List<Object> result = reportQuery.list();
    while(result.size()>0){
    		session.flush();
    		session.clear();
    		finalResult.addAll(result);
    		reportQuery.setFirstResult(indexResult);
    		result = reportQuery.list();
    		indexResult+=15;
    		}
     
    return finalResult;
    J'ai dis temporaire car dans le select original avec tous les champs SQL, si on retire une variable bien spécifique (LBDTC qui est un datetime), et bien le query s'execute sans probleme.

    Notre probleme est résolu mais la cause réelle n'est pas encore trouvée...

    EDIT:

    Voici aussi la configuration de C3P0:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <prop key="hibernate.c3p0.acquire_increment">1</prop> 
    <prop key="hibernate.c3p0.idle_test_period">100</prop> 
    <prop key="hibernate.c3p0.min_size">10</prop> 
    <prop key="hibernate.c3p0.max_size">100</prop> 
    <prop key="hibernate.c3p0.max_statements">0</prop>
    <prop key="hibernate.c3p0.timeout">180</prop>

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    729
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 729
    Par défaut
    Je relance la discussion. Nous n'avons pas trouvé de solution. Peut-être cela vient-il du fait que l'on utilise une concaténation dans notre requête ? Merci si vous avez une piste.

Discussions similaires

  1. requête qui tourne indéfiniment
    Par julien.63 dans le forum Outils
    Réponses: 5
    Dernier message: 01/09/2006, 22h34
  2. [FLASH MX2004] Animation qui boucle
    Par pok dans le forum Flash
    Réponses: 2
    Dernier message: 24/10/2005, 01h21
  3. Select qui boucle ou se termine par un Ora-01460
    Par PatriceP dans le forum Oracle
    Réponses: 4
    Dernier message: 29/10/2004, 08h53
  4. [Defi] Query SQL qui semble tres simple
    Par Wakko2k dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2004, 10h01
  5. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38

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