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 :

Récupération d'une liste --> utilisateur is not mapped [select nom from utilisateur


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut Récupération d'une liste --> utilisateur is not mapped [select nom from utilisateur
    Bonjour,
    Je débute totalement ... Ne criez pas trp fort svp... ;-)

    Voila je cherche à récupérer une liste des noms des utilisateurs de ma BDD (mysql).

    Le code utilisé à l'intérieur de mon Main est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Session session = HibernateUtil.currentSession();
    List list = session.createQuery("select nom from utilisateur where nom= ?").setString(0, "nom").list();
    Iterator it = list.iterator();
    while(it.hasNext()) {
    Utilisateur unUtilisateur = (Utilisateur)it.next();
    System.out.println(unUtilisateur.getNom()); }
    HibernateUtil.closeSession();

    Au lancement, problème !

    Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: utilisateur is not mapped [select nom from utilisateur where nom= ?]
    at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
    at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
    at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
    at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:257)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    at applicatifLFD.Test.main(Test.java:44)
    Pour information, mon fichier Utilisateur.hbm.xml est :

    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="donnees">
    	<class name="Utilisateur" table="utilisateur">
    		<meta attribute="sync-DAO">false</meta>
    		<id name="Id" type="integer" column="id"><generator class="increment"/></id>
    		<!--<property name="IdProfil" column="id_profil" type="integer" not-null="true" length="11"/>-->
    		<property name="Nom" column="nom" type="string" not-null="true" length="32"/>
    		<property name="Prenom" column="prenom" type="string" not-null="true" length="32"/>
    		<property name="Login" column="login" type="string" not-null="true" length="8"/>
    		<property name="Mdp" column="mdp" type="string" not-null="true" length="8"/>
    	</class>	
    </hibernate-mapping>
    et hibernate.cfg.xml :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    	<session-factory>
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.password">master</property>
    		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/LFD</property>
    		<property name="hibernate.connection.username">master</property>
    		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    		<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
    		<property name="current_session_context_class">thread</property>
    		<property name="hibernate.show_sql">true</property>
    		<mapping resource="Utilisateur.hbm.xml" />
    		<mapping resource="Role.hbm.xml" />
    	</session-factory>
    </hibernate-configuration>
    Je n'arrive pas à cerner le problème....

    Merci d'avance!

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Il faut utiliser le nom de ta classe dans ta requete et non pas le nom de ta table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom from Utilisateur where nom= ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Encore un bon point pour fr1man !! :-)

    Dorénavant, en lieu et place des messages d'erreurs précédents (la console donc ...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hibernate: select utilisateu0_.nom as col_0_0_ from utilisateur utilisateu0_ where utilisateu0_.nom=?
    J'ai essayé différentes choses, notamment de mettre, ou pas, le nom de variable 'nom' en majuscule à différents endroits (dans la requête, en paramètre du setString)...

    Pour l'instant, choux blanc!

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ca semble correct.
    C'est normal que tu ne vois pas la valeur du paramêtre apparaitre dans la console.
    Queston bête :
    Es tu sur que ta base contient bien des données ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je dis peut être une bêtise mais avec la requête ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List list = session.createQuery("select nom from Utilisateur where nom= ?").setString(0, "nom").list();
    alors Hibernate ne va récupérer que la colonne "nom".
    Ne faudrait-il pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List list = session.createQuery("from Utilisateur where nom= ?").setString(0, "nom").list();
    Pour ensuite avoir une liste d'objet "Utilisateur" et pouvoir alors appeler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilisateur unUtilisateur = (Utilisateur)it.next();

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Le problème reste le même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Hibernate: select utilisateu0_.id as id0_, utilisateu0_.nom as nom0_, utilisateu0_.prenom as prenom0_, utilisateu0_.login as login0_, utilisateu0_.mdp as mdp0_ from utilisateur utilisateu0_ where utilisateu0_.nom=?
    Toujours pas d'idée....

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Quel est ton problème exactement, car le message que tu vois est simplement
    la traduction SQL de ta requête HQL.
    Il n'y a rien d'anormal à voir ce message.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    Salut

    essaie avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom from Utilisateur u where u.nom= ?
    et dis moi ce que ca donne

    @+


    Loïc

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Tu pointes du doigt un autre de mes problèmes : Je n'arrive pas à utiliser les alias dans mes requêtes...

    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
    Exception in thread "main" org.hibernate.QueryException: could not resolve property: nom of: donnees.Utilisateur [select nom from donnees.Utilisateur u where u.nom= ?]
    	at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
    	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37)
    	at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1312)
    	at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
    	at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
    	at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:505)
    	at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:223)
    	at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:174)
    	at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
    	at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
    	at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:727)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1216)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3525)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    	at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    	at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    	at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    	at applicatifLFD.Test.listeUtilisateurs(Test.java:64)
    	at applicatifLFD.Test.main(Test.java:21)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Jen'avais pas vu ton intervention Ô grand fr1man! :-)

    Le problème est que j'en suis encore aux tests d'hibernate et que je souhaite tout simplement à récupérer une liste d'utilisateurs et à afficher dans la console leur nom.
    Or, pour l'instant , il me retourne juste cette étrange requête (est-il normal en SQL que la dernière lettre des tables et des champs soient remplacés par '0_' ?) mais n'affiche rien d'autre....

    Moi y'en a pas comprendre le pourquoi ....

  11. #11
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Oui, c'est normal.
    C'est Hibernate qui traduit ta requête à sa manière, en SQL.
    C'est normal également de voir un ? à la place de ton paramètre.
    Il faut activer log4j pour avoir la valeur des paramètres.


    Si tu veux utiliser les alias, essaie ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select u.nom from Utilisateur u where u.nom= ?

    Mais comme cela a été dit plus haut, il est plus intéressant de récupérer tous les objets Utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from Utilisateur u where u.nom= ?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Quand j'essaye une requête avec un alias, j'ai à nouveau les messages d'erreurs indiqués un peu plus haut...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from Utilisateur u where u.nom= ?
    Ce serait dû à log4j?
    Je croyais que log4j servait uniquement à récupérer des informations sur le fonctionnement interne de l'application (genre erreur, exception, ...).
    Son utilisation est elle indispensable?

  13. #13
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Log4j n'a rien à voir là dedans.
    Log4j te permet d'avoir des logs très précis d'Hibernate et notamment d'avoir la valeur des paramètres de tes requêtes. Valeur qui se cache derrière les ?


    Pour tes alias, si tu as tapé, la requête telle que viens de l'écrire, je ne vois pas où est l'erreur. A moins que ça ne vienne de la majuscule à "Nom" que l'on trouve dans ton mapping et que tu as oublié dans ta requête.
    D'ailleurs c'est une mauvaise idée. En Java, la bonne pratique veut que les noms de variables ne commencent pas par une majuscule.

  14. #14
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Bonjour,

    Effectivement c'est bizarre cette erreur sur l'alias.
    On ne sait jamais mais essaye cette méthode pour réaliser ton alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from Utilisateur as u where u.nom = ?
    Sinon essaye l'ancienne méthode pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from u in class Utilisateur where u.nom = ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Merci pour ces infos!
    En effet, en mettant une majuscule à 'Nom' je retrouve bien dans la console la requête en lieu et place des erreurs.

    Ce que je souhaite réalisé est de voir s'inscrire, pour exmple, les noms des utilisateurs.

    Je tente cette opération par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		public static void listeUtilisateurs(){
    		Session session = HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();			
    		List list = session.createQuery("from Utilisateur u where u.Nom= ?").setString(0, "nom").list();
    		Iterator it = list.iterator();
    		while(it.hasNext()) 
    			{
    			Utilisateur unUtilisateur = (Utilisateur)it.next();
    			System.out.println(unUtilisateur.getNom()); 
    			}
    		tx.commit();
    		HibernateUtil.closeSession();
    Me trompe-je? Enfin oui... mais où???

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Petit contre temps : j'ai perdu tout mon projet...
    Je recommence (heureusement pas trop avancé...) et vous tiens aux news.
    Merci de votre soutien

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 14
    Points
    14
    Par défaut
    Ca y est ! :-)
    Le problème (du moins pour moi... ;-) ) est résolu !

    Je me suis encore inspiré d'un code trouvé sur la toile (je croie que c'était dans le manuel de référence hibernate 3.2) et ai donc modifié ma méthode main de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static void listeUtilisateurs(){
    		Session session = HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();			
    		List utilisateurs = session.createQuery("select u from Utilisateur as u").list();
    		for (Iterator iter = utilisateurs.iterator(); iter.hasNext();) {
    			Utilisateur element = (Utilisateur) iter.next();
    			String prenom = element.getPrenom();
    			System.out.println(prenom);
    			}
    		tx.commit();
    		HibernateUtil.closeSession();
    Voili voilou, ce "petit" problème est résolu. :-)
    Encore merci pour votre aide !

  18. #18
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Points : 178
    Points
    178
    Par défaut Commande is not mapped
    Bonjour , débutant en hibernate , j'ai du mal à débugguer un problème.

    Voici la classe test qui génére l'erreur (qui est d'ailleurs présente dès que je touche à la table ou l'objet Commande).

    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
     
    public class TestCommandeLister { 
     
      public static void main(String args[]) throws Exception { 
        Configuration config = new Configuration(); 
        config.addClass(Article.class); 
        SessionFactory sessionFactory = config.buildSessionFactory(); 
        Session session = sessionFactory.openSession(); 
     
        try { 
          Query query = session.createQuery("from Commande"); 
          List commandes = query.list();
          for (int i = 0; i < commandes.size(); i++) { 
        	  Commande commande = (Commande) commandes.get(i); 
            System.out.println("nom = " + commande.getReference()); 
          } 
        } finally { 
          session.close(); 
        } 
        sessionFactory.close(); 
      }
    L'erreur générée
    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
    Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: Commande is not mapped [from Commande]
    	at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
    	at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
    	at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
    	at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:255)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    	at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    	at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    	at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    	at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    	at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    	at test.TestCommandeLister.main(TestCommandeLister.java:22)
    Mon fichier Mapping
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping
        PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    	<class name="mywebapp.persistance.data.Commande" table="commande">
    		<id name="reference" type="string"><generator class="assigned" /></id>
    			<property name="quantite" type="int" not-null="true" />
    	</class>
    </hibernate-mapping>
    Mon fichier de configuration hibernate contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<mapping resource="mywebapp/persistance/data/Commande.hbm.xml" />
    Ma classe Commande :
    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
    package mywebapp.persistance.data;
     
    public class Commande {
     
    	private Integer quantite;
    	private String reference;
     
    	public Commande(){}
     
    	public Commande(String r, Integer i) {
    		this.reference = r;
    		this.quantite = i;
    	}
     
     
    	public Integer getQuantite() {
    		return quantite;
    	}
     
    	public void setQuantite(Integer quantite) {
    		this.quantite = quantite;
    	}
     
    	public String getReference() {
    		return reference;
    	}
     
    	public void setReference(String reference) {
    		this.reference = reference;
    	};
     
    }
    Et le schéma de ma base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    CREATE TABLE `commande` (
      `quantite` int(3) default NULL,
      `reference` varchar(15) NOT NULL default '',
      PRIMARY KEY  (`reference`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Voilà si vous avez des idées pour débugguer , ça serait sympa.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Points : 18
    Points
    18
    Par défaut Objets
    Pour ceux qui n'aurait pas tout suivi dans une requête SQL hibernate il faut utiliser les Class (les "objets") et non les tables en base de donnée.

    une table : "utilisateurs" avec "nom", "prenom", "adresse" (qui référence une adresse dans une table "adresses")
    revient en objet à :
    public class Utilisateur
    private String nom
    private String prenom
    private Adresse adresse.

    (note : pas de majuscule en début d'identifiant, seulement pour les class !!! C'est une règle en programmation !)
    Après dans une requête on peut donc récupérer tous les utilisateurs habitant la rue du paradis :
    "from Utilisateurs u where u.adresse.rue = ?"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/03/2007, 20h51
  2. Récupération d'une liste chaînée
    Par L'ancien dans le forum Langage
    Réponses: 3
    Dernier message: 04/02/2007, 01h16
  3. Récupération d'une liste déroulante
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 28/10/2006, 23h29
  4. Récupération d'une liste de structures Oracle via Java
    Par MagikMarcel dans le forum Langage
    Réponses: 2
    Dernier message: 29/06/2006, 16h34
  5. Réponses: 6
    Dernier message: 16/05/2006, 16h17

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