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 :

Problème dans une requete HQL


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut Problème dans une requete HQL
    Bonjour j'ai un problème dans une requete sur table avec hibernate quand je lance par exemple "from utilisateur" tout plonte et je suis obligé de redemarrer la machine sachant que ma table contient 100 enregistrement

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    si "tout plonge" inclu ce qui se trouve en dehors de java, je dirais que ta machine a un sérieux problème Avec du code java, tout ce que tu risque c'est de saturer la JVM ou éventuellement de bouffer tout le CPU, mais dans ce cas la, killer la jvm suffit à rétablir ta machine. Peux tu nous montrer ce qui sort quand tu met show_sql à true ainsi que tes fichiers de mapping?

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    le test je le fais dans une page jsp où j'appel ma méthode quand je lance la page tout plonte et j'ai pas la main de voir la console

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ton conteneur devrais rediriger les logs vers un fichier de log, tu n'a qu'à le lire après arrêt. Peux-tu estre plus précis sur "Tout plonge" ? On peux voir ton code?

  5. #5
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    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
    public List<RTable> findAll() {
            try {
                org.hibernate.Transaction tx = session.beginTransaction();
     
    			List<RTable> table = (List<RTable>)session.createQuery("from RTable ").list();
     
    			return table;
    		} catch (RuntimeException re) {
    			re.printStackTrace();
    			return new ArrayList<RTable>();
    		}
        }
     
    dans ma page jsp :
     
    <%
     
     
                           TableDaoImp usi=new TableDaoImp();
                           try{
                           List t=usi.findAll();
     
                           int tsize=utilisateur.size();
                            out.print("<tr><th><b>Nom</b></th><th><b>Libelle</b></th></tr>");
                          for (int i = 0; i < tsize; i++) {
                              RTable qs = (RTable) t.get(i);
     
                           out.print("<tr>");
            out.print("<td><b>" + qs.getNom() + "</b></td>");
            out.print("<td><b>" + qs.getLibelle() + "</b></td>");
     
            out.print("</tr>");
                           }
                       }catch(Exception e){
                           out.print(e.getMessage());
                           }*/
     
                       %>

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    il manque toujours le mapping demandé au premier post. Aussi, tu ne nous dit toujours pas ce que tu entends par "plonge" , le jsp n'est pas complet et le bout que tu montre est manifestement en commentaire (présence du */ à la fin)

  7. #7
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    Pour le mapping de la table R_table :
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 16 juil. 2009 16:50:58 by Hibernate Tools 3.2.1.GA -->
    <hibernate-mapping>
        <class name="com.test.model.RTable" table="R_tables" catalog="SourceMagest">
            <id name="tableId" type="int">
                <column name="TableID" />
                <generator class="assigned" />
            </id>
            <property name="tableNom" type="string">
                <column name="TableNom" length="50" not-null="true" />
            </property>
            <property name="tableLibelle" type="string">
                <column name="TableLibelle" length="70" not-null="true" />
            </property>
            <set name="RChpses" inverse="true">
                <key>
                    <column name="TableID" not-null="true" />
                </key>
                <one-to-many class="com.test.model.RChps" />
            </set>
            <set name="RUtilisateurs" inverse="true" table="R_utiltables">
                <key>
                    <column name="TableID" not-null="true" />
                </key>
                <many-to-many entity-name="com.test.model.RUtilisateur">
                    <column name="UtilCode" length="30" not-null="true" />
                </many-to-many>
            </set>
        </class>
    </hibernate-mapping>
    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
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h1>Hello World!</h1>
            <table>
    <%
     
                           //UtilisateurDaoImp usi=new UtilisateurDaoImp();
                           TableDaoImp tdi=new TableDaoImp();
                           int i=5;
                           try{
                           RTable t=tdi.getTable(i);
     
     
                            out.print("<tr><th><b>Nom</b></th><th><b>Libelle</b></th></tr>");
     
     
                           out.print("<tr>");
            out.print("<td><b>" + t.getTableNom() + "</b></td>");
            out.print("<td><b>" + t.getTableLibelle() + "</b></td>");
     
            out.print("</tr>");
     
                       }catch(Exception e){
                           out.print(e.getMessage());
                           }
     
                       %>
     
     
                   </table>
        </body>
    </html>
    J'ai testé sur une autre methode getTable(int id) la meme chose la machine se plonte et j'ai po la main pour faire aucune chose :
    la méthode :
    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
     
    public RTable getTable(int id) {
     
    			try {
                    org.hibernate.Transaction tx = session.beginTransaction();
    				 RTable table =(RTable) session.createQuery("from RTable as t where t.tableId=:id").setParameter("id",id).uniqueResult();
     
     
    				return table;
    				}
    				catch(Exception e) {
                        e.printStackTrace();
    				return null;
    				}
        }

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    il y a a priori combien d'élément en moyen dans le set pointé par le table? Le serveur de base de données et sur la meme machine que le serveur J2EE et que le borwser? Essaie de séparer sur des machines différent pour voir laquelle plante, mais java ne fait jamais planter une machine. T'aurais pas de la RAM defectueuse par hasard?

  9. #9
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    la base de données et conteneur j2ee sont sur la meme machine et j'ai 1 Go de RAM ta table contient environ 100 enregistrement

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Je parlais du set "<set name="RUtilisateurs">" pas de la premier table. As-tu essayé de changer de machine pour tes test. encore une fois, meme avec les pire crasse dans une jvm difficile de mettre la machine physique à genoux.

  11. #11
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    a e moment j'ai pas une autre machine de test mais le problème que si je test avec la table utilisateur tout marche b1 sauf la table r_table qui pose problème

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    comment lance tu ta jvm, quelle est la taille de la table R_utiltables, on peut voir le mapping de R_utiltables? Si tu fais du pas à pas, ca foire quand?

  13. #13
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    DANS LE FICHIER R_table.hbm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <set name="RUtilisateurs" inverse="true" table="R_utiltables">
                <key>
                    <column name="TableID" not-null="true" />
                </key>
                <many-to-many entity-name="com.test.model.RUtilisateur">
                    <column name="UtilCode" length="30" not-null="true" />
                </many-to-many>
            </set>
    dans le fichier r_utilisateur.hbm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <set name="RTables" inverse="false" table="R_utiltables">
                <key>
                    <column name="UtilCode" length="30" not-null="true" />
                </key>
                <many-to-many entity-name="com.test.model.RTable">
                    <column name="TableID" not-null="true" />
                </many-to-many>
            </set>

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    on peut voir le mapping de R_utiltables "complet"? Toujours pas répondu à cette question: "quelle est la taille de la table R_utiltables" ni à "Si tu fais du pas à pas, ca foire quand? "....

    Et pense à rajouter lazy="true" sur tes collections pour limiter la quantité de données à pomper en une seule fois de la db.

  15. #15
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    la R_UTILTABLES EST VIDE , j ai po compris "Si tu fais du pas à pas, ca foire quand? " comment je peux faire du pas à pas .
    j'ai pas un fichier qui s'appel r_utiltables.hbm cette table est mappée dans les 2 autre fichier de r_table et r_utilisateur

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par cyclopsnet Voir le message
    j ai po compris "Si tu fais du pas à pas, ca foire quand? " comment je peux faire du pas à pas . Avec ton IDE, tout dépend duquel tu utiliser, tu te met en mode debug, tu met un breakpoint sur ton appel et t'avance pas à pas
    j'ai pas un fichier qui s'appel r_utiltables.hbm
    Et j'ai pas demandé ce fichier, j'ai demandé le mapping dans la table, tu aura compris qu'il s'agit donc dans ton cas du fichier r_utilisateur.hbm


    Note que je suis meme pas sur qu'il s'agisse d'un problème d'hibernate. Il faudrait tester sur une autre machine avant et séparer le serveur du browser et de la database pour voir lequel met ta machine à genoux.


    Aussi remplace les
    out.print(e.getMessage());

    par des e.printStackTrace(), histoire d'avoir une trace dans les logs de l'exception et pouvoir la lire au démarrage suivant.

Discussions similaires

  1. problème du paramètre dans une requete hql
    Par moha_alnif dans le forum iReport
    Réponses: 4
    Dernier message: 01/05/2009, 21h50
  2. problème du paramètre dans une requete hql
    Par moha_alnif dans le forum Hibernate
    Réponses: 0
    Dernier message: 01/05/2009, 20h03
  3. comment remplacer les resultat NULL dans une requete HQL
    Par Rambler dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/08/2007, 17h55
  4. Problème dans une requete de mise à jour
    Par marsupilami34 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/08/2007, 23h55
  5. encore un probléme dans une requete
    Par sarah_s dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/05/2007, 14h56

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