-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: La Jointure entre 2 tables
PostPosted: Wed Oct 29, 2008 7:45 am 
Newbie

Joined: Sat Oct 11, 2008 10:18 am
Posts: 12
salut tout le monde,

j'ai 2 tables dans une bd, et je veux ecrire une requete hql avec la jointure entre les deux tables.
mais je n'arrive pas à l'ecrire , est ce que quelqu'un peut m'aider.
TABLE1(cle1, nom, prenom)
TABLE2(cle2,nomEmpl)

select table1.nom,table2.cours form Table1 as table1 , Table2 as table2 left join table1 on table2.nomEmpl = table1.nom
where table1.prenom="toto";
merci d'avance.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 04, 2008 8:35 am 
Newbie

Joined: Tue Nov 04, 2008 7:58 am
Posts: 6
normalement le passage par HQL necessite que tu ais décrit le mapping entre tes objets métier JAVA et ta base de donnée.

Peux tu nous les présenter ?

normalement pour deux tables ayant une relation interne tu devrait avoir un truc de ce genre

Code:
<?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="com.projet.Groupe" table="groupe">
   <cache usage="read-write"/>
        <id name="id" column="id" type="long">
            <generator class="sequence">
                <param name="sequence">seq_groupe</param>
            </generator>
        </id>
        <property name="code" column="code" type="string"/>
        <property name="libelle" column="libelle" type="string"/>
       
        <set name="membre" outer-join="false" inverse="true" lazy="true">
       <cache usage="read-write"/>
            <key column="idGroupe" />
            <one-to-many class="com.projet.User" />
         </set>
    </class>
</hibernate-mapping>


et

Code:
<?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="com.projet.User" table="user">
   <cache usage="read-write"/>
        <id name="id" column="id" type="long">
            <generator class="sequence">
                <param name="sequence">seq_user</param>
            </generator>
        </id>
        <property name="pseudo" column="pseudo" type="string"/>
        <property name="mail" column="mail" type="string"/>
       
        <many-to-one outer-join="false" name="groupe" column="idGroupe" class="com.projet.Groupe" cascade="none" lazy="false"/>

    </class>
</hibernate-mapping>


Ainsi que tes objets Java correspondant : Groupe et User (user faisant partis d'un seul groupe, je pense que tu auras compris)

Ta requête HQL est ni plus ni moins qu'une requete SQL orientée OBJET.

pour avoir tous tes élements tu fais

reqHQL = "from user u where u.pseudo like 'test%' and u.groupe.code = 'ADMIN'"

Après exécution tu récupèreras tous les objets User ayant un pseudo commençant par "test" et étant dans le groupe ayant le code ADMIN.



En espérant t'avoir donné assez de piste pour la suite ;) n'hésite pas à revenir pour + d'info.


Top
 Profile  
 
 Post subject: Merci
PostPosted: Wed Nov 05, 2008 10:37 am 
Newbie

Joined: Sat Oct 11, 2008 10:18 am
Posts: 12
merci cher ami,
mais le problème que j'ai c'est que j'ai plusieurs table qui n'ont pas de relation entre eux, et je veux savoir comme écrire un code HQL qui va me permettre de faire une jointure entre deux tables avec left outer join et merci.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 05, 2008 12:11 pm 
Newbie

Joined: Tue Nov 04, 2008 7:58 am
Posts: 6
ca rejoint donc l'autre topic que tu as ouvert ici ?

http://forum.hibernate.org/viewtopic.php?t=991986

Je n'ai pas vraiment plus d'information à te donner.

Dans le cas ou tes X tables n'ont effectivement RIEN DU TOUT en commun et que tu veux faire un équivalent de ce que j'ai compris, le code généré devrait avec cette tronche

Code:
FROM objetTable1 o1, objetTable2 o2 WHERE o1.nom = o2.nomEmpl



Celà implique par contre, de toute manière sans possibilité d'y échapper à ma connaissance


la création des fichiers de mapping Hibbernate de tes objet objetTable1 et 2 sur les tables table1 et 2 de cette manière

Code:
<?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="com.projet.ObjetTable1" table="table1">
        <id name="id" column="cle1" type="long">
            <generator class="sequence">
                <param name="sequence">seq_table1</param>
            </generator>
        </id>
        <property name="nom" column="nom" type="string"/>
        <property name="prenom" column="prenom" type="string"/>
    </class>
</hibernate-mapping>


ainsi que

Code:
<?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="com.projet.ObjetTable2" table="table2">
        <id name="id" column="cle2" type="long">
            <generator class="sequence">
                <param name="sequence">seq_table2</param>
            </generator>
        </id>
        <property name="nomEmpl" column="nomEmpl" type="string"/>
    </class>
</hibernate-mapping>


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.