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 :

probleme jointure hibernate


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut probleme jointure hibernate
    bonjour tout le monde, j'ai un probleme au niveau de récuperation d'un champs.
    je passe en parametre le nom d'un client et je voudrais récuperer le nom de ce client , date reservation et les info concernant la reservation de ce client.dans la table reservation j'ai comme champs le code_client,
    donc il faut que je fasse une jointure entre la table client et reservation,mais cette jointure ne marche pas.
    voila le code de la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public List resultatReservation(String input) {
    	   Session session = HibernateSessionFactory.currentSession();
     
    	   List list=(List)session.createQuery("from Client , Reservation  " +
    	   		"where Client.CODE_CLIENT=Reservation.CODE_CLIENT and NOM like '"+input+"' ").list();
    return list;
    	}
    pour lister la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String nom="client nom";
    		ReservationService rs =new ReservationService();
            Reservation r=new Reservation();
    Iterator it=rs.resultatReservation(nom).iterator();
    while(it.hasNext())
       { 			
    	r=(Reservation)it.next();
    System.out.println("nom :"+r.getClient().getNom()) ;
       }
    erreur:
    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
    Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxError: Invalid path: 'Client.CODE_CLIENT' [from com.gh.model.Client , com.gh.model.Reservation  where Client.CODE_CLIENT=Reservation.CODE_CLIENT and NOM like 'client nom' ]
    	at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:63)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:196)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
    	at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
    	at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
    	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:834)
    	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
    	at com.gh.service.ReservationService.resultatReservation(ReservationService.java:63)
    	at com.gh.model.Application.main(Application.java:229)
    Caused by:  Invalid path: 'Client.CODE_CLIENT'
    	at org.hibernate.hql.ast.LiteralProcessor.lookupConstant(LiteralProcessor.java:85)
    	at org.hibernate.hql.ast.DotNode.resolve(DotNode.java:172)
    	at org.hibernate.hql.ast.FromReferenceNode.resolve(FromReferenceNode.java:87)
    	at org.hibernate.hql.ast.FromReferenceNode.resolve(FromReferenceNode.java:83)
    	at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:463)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:863)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:3713)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3190)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1405)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1330)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:599)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:404)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
    	at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
    	at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
    	... 8 more
    merci pour votre aide

  2. #2
    Membre du Club Avatar de TheEwook
    Inscrit en
    Novembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 44
    Points : 50
    Points
    50
    Par défaut
    Salut,

    Est-ce que tu pourrais nous fournir le fichier hbm en question, cela pourra nous aider.

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    Client.hbm.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
    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
    <?xml version="1.0" encoding='UTF-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="com.gh.model">
     <class name="Client" table="client">
      <id name="code_client" column="CODE_CLIENT" type="java.lang.Integer">
            <generator class="native"/>
       </id>
     
    <property name="nom" column="NOM" type="java.lang.String"/>
    <property name="prenom" column="PRENOM" type="java.lang.String"/>
    <property name="ville" column="VILLE" type="java.lang.String"/>
    <property name="pays" column="PAYS" type="java.lang.String"/>
    <property name="telephone" column="TELEPHONE" type="java.lang.String"/>
    <property name="email" column="EMAIL" type="java.lang.String"/>
     
    <property name="civilite" column="CIVILITE" type="java.lang.String"/>
     
    	   <property name="type_client" column="TYPE_CLIENT" type="java.lang.String"/>
    	   <property name="concat" column="CONCAT" type="java.lang.String"/>
     
    <property name="nationalite_clt" column="NATIONALITE_CLT" type="java.lang.String"/>
    <property name="adresse_clt" column="ADRESSE_CLT" type="java.lang.String"/>
    <property name="date_naissance_clt" column="DATE_NAISSANCE_CLT" type="java.util.Date"/>
    <property name="lieu_naissance_clt" column="LIEU_NAISSANCE_CLT" type="java.lang.String"/>
    <property name="profession_clt" column="PROFESSION_CLT" type="java.lang.String"/>
    <property name="cin_clt" column="CIN_CLT" type="java.lang.String"/>
    <property name="provenance_clt" column="PROVENANCE_CLT" type="java.lang.String"/>
    <property name="destination" column="DESTINATION" type="java.lang.String"/>
    <property name="nbre_enfant" column="NBRE_ENFANT" type="java.lang.String"/>
    <property name="num_passeport_clt" column="NUM_PASSEPORT_CLT" type="java.lang.String"/>
    <property name="permis_conduire_clt" column="PERMIS_CONDUIRE_CLT" type="java.lang.String"/>
     
    <property name="raison_sociale" column="RAISON_SOCIALE" type="java.lang.String"/>
    <property name="ville_ste" column="VILLE_STE" type="java.lang.String"/>
    <property name="adresse_ste" column="ADRESSE_STE" type="java.lang.String"/>
    <property name="pays_ste" column="PAYS_STE" type="java.lang.String"/>
    <property name="tel_ste" column="TEL_STE" type="java.lang.String"/>
    <property name="fax_ste" column="FAX_STE" type="java.lang.String"/>
    <property name="email_ste" column="EMAIL_STE" type="java.lang.String"/>
     
     
     <set 	name="facturesG" 
                lazy="true"
                cascade="all-delete-orphan">
               <key column="CODE_CLIENT" />
               <one-to-many class="FactureG"/>
       </set>
     
       <set 	name="reservation" 
                lazy="true"
                cascade="all-delete-orphan">
               <key column="CODE_CLIENT" />
               <one-to-many class="Reservation"/>
       </set>
     
      </class>
    </hibernate-mapping>
    Reservation.hbm.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
    19
    20
    21
    22
    23
    24
    <?xml version="1.0" encoding='UTF-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping package="com.gh.model">
     <class name="Reservation" table="reservation">
     
     <id name="code_reservation" column="CODE_RESERVATION" type="java.lang.Integer">
            <generator class="native"/>
       </id>	
     
     <property name="date_reservation"  column="DATE_RESERVATION" type="java.util.Date" />
     <property name="date_arrivee_prevue"  column="DATE_ARRIVEE_PREVUE" type="java.util.Date" />
     <property name="date_arrivee"  column="DATE_ARRIVEE" type="java.util.Date" />
     <property name="date_fin_reservation"  column="DATE_FIN_RESERVATION" type="java.util.Date" />
      <property name="arrhe"  column="ARRHE" type="java.lang.Integer" />
        <property name="code_entreprise"  column="CODE_ENTREPRISE" type="java.lang.Integer" />
     
     
    <many-to-one name="prestation"  column="NUM_PRESTATION" class="Prestation" not-null="true"/>	
    <many-to-one name="client"  column="CODE_CLIENT" class="Client" not-null="true"/>
     </class>
    </hibernate-mapping>

  4. #4
    Membre du Club Avatar de TheEwook
    Inscrit en
    Novembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2004
    Messages : 44
    Points : 50
    Points
    50
    Par défaut
    essai de mettre des alias aux nom de tes tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     List list=(List)session.createQuery("from Client c , Reservation  r" +
                   "where c.CODE_CLIENT=r.CODE_CLIENT and c.NOM like '"+input+"' ").list();

  5. #5
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Je pense qu'hibernate est case sensitive. Tu devrais avoir code_client et non CODE_CLIENT.
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    voila je pense que je dois avoir client au lieu de code_client mais le probleme maintenant je pense qu'au niveau ou il veut lister les objets il a une confusion entre l'objet Client et Reservation
    voila la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public List resultatReservation(String input) {
    	   Session session = HibernateSessionFactory.currentSession();
     
    	   List list=(List)session.createQuery("from Client c , Reservation  r " +
                   " where c.code_client=r.client  and c.nom like '"+input+"' ").list();
    	   return list;
    	}
    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
    	at com.gh.model.Application.main(Application.java:232)

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2006
    Messages : 66
    Points : 42
    Points
    42
    Par défaut
    j'ai trouvé la solution .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List list=(List)session.createQuery("select r from Client c , Reservation  r " +
                   " where c.code_client=r.client  and c.nom like '"+input+"' ").list();
    merci pour votre aide

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

Discussions similaires

  1. probleme jointure externe
    Par lazzeroni dans le forum Oracle
    Réponses: 1
    Dernier message: 24/05/2006, 10h38
  2. Probleme jointure d'une table sur elle même
    Par fred64 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/05/2006, 15h01
  3. Probleme jointure left
    Par lamoufle dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/12/2005, 20h45
  4. probleme jointures
    Par blasted dans le forum ASP
    Réponses: 3
    Dernier message: 14/07/2005, 14h49
  5. Problèmes avec Hibernate (sous Eclipse)
    Par Pierric dans le forum Hibernate
    Réponses: 2
    Dernier message: 07/04/2005, 14h35

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