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 :

hibernate inner join


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut hibernate inner join
    Bonjour à tous,
    J'ai 2 tables: 'USER' et 'USERTITLE'
    La table USERTITLE contient 4 colonnes dont: TITLEID(clé primaire) et TITLE
    La table user contient plusieurs colonnes dont: ID(clé primaire), TITLE(clé étrangère référencée à la clé primaire de USERTITLE), NAME et SURNAME.

    J'ai 2 objets 'UserTitle' et 'User' et 'UserTitle' est déclaré en tant que propriété de 'User'. Ce que je veux faire c'est d'avoir une requête de ce type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select u.id as id, t.title as title,
           u.name as name, u.surname as surname
      from users u inner join usertitle t
           on u.title = t.titleid
      order by u.id
    avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    HibernateCallback callback = new HibernateCallback() {
     
    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    Criteria criteria = session.createCriteria(User.class);
                    return criteria.list();
                }
            };
            return getHibernateTemplate().executeFind(callback);
    user.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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <?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 default-lazy="false">
    	<class name="org.deep.spring.mvc.user.User" table="users">
    		<id column="id" name="id" type="int">
    			<generator class="sequence">
    				<param name="sequence">seq_id_users</param>
    			</generator>
    		</id>
    		<property name="civility">
    			<column name="title" />
    		</property>
    		<property name="name">
    			<column name="name" />
    		</property>
    		<property name="surname">
    			<column name="surname" />
    		</property>
    		<property name="middleName">
    			<column name="middlename" />
    		</property>
    		<property name="role">
    			<column name="role" />
    		</property>
    		<property name="streetno">
    			<column name="street_no" />
    		</property>
    		<property name="address">
    			<column name="address" />
    		</property>
    		<property name="address2">
    			<column name="address2" />
    		</property>
    		<property name="zip">
    			<column name="zip" />
    		</property>
    		<property name="tel">
    			<column name="telephone" />
    		</property>
    		<property name="tel2">
    			<column name="telephone2" />
    		</property>
    		<property name="fax">
    			<column name="fax" />
    		</property>
    		<property name="email">
    			<column name="email" />
    		</property>
    		<property name="user">
    			<column name="username" />
    		</property>
    		<property name="password">
    			<column name="password" />
    		</property>
    		<property name="password2">
    			<column name="password2" />
    		</property>
    		<property name="maidenName">
    			<column name="maiden_name" />
    		</property>
    		<property name="city">
    			<column name="city" />
    		</property>
    		<property name="state">
    			<column name="state" />
    		</property>
    		<property name="country">
    			<column name="country" />
    		</property>
    		<property name="officeDepart">
    			<column name="department" />
    		</property>
     
    		<!-- 'name' is the name of the property declared in the bean User column is the name of the column in the table 'USERS'-->
    		<many-to-one name="userTitle" column="TITLE" 
    			not-null="true" insert="false" update="false" />
    	</class>
    </hibernate-mapping>
    usertitle.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
     
    <?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 default-lazy="false">
    	<class name="org.deep.spring.mvc.user.UserTitle" table="usertitle">
    		<id column="titleid" name="titleid" type="int">
    			<generator class="sequence">
    				<param name="sequence">SEQ_ID_USERTITLE</param>
    			</generator>
    		</id>
    		<property name="languageId">
    			<column name="languageid" />
    		</property>
    		<property name="language">
    			<column name="language" />
    		</property>
    		<property name="title">
    			<column name="title" />
    		</property>
    	</class>
    </hibernate-mapping>
    la requete fonctionne, le inner join se passe bien mais j'obtiens une requete qui me selectionne toutes les données de la table et toutes les données de celle de usertitle,
    Comment doivent être les fichiers mapping 'usertitle.hbm.xml' et 'user.hbm.xml' pour

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut
    desolé mauvaise manip j'ai posté un message incomplet.

    Ce que je veux avoir c'est uniquement ID,TITLE,NAME et SURNAME. Comment dois-je faire pour obtenir ce resultat
    Merci beaucoup

  3. #3
    Membre Expert
    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
    Par défaut
    Ben tu récupères un objet de type user, à partir de celui-ci , tu peux obtenir ton usertitle.
    Qu'est-ce qui te gêne ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Je pense qu'il faut rajouter une projection dans criteria
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    Criteria criteria = session.createCriteria(User.class);
                   criteria.setProjection(Projections.projectionList()
    				.add(Projections.property("id"))
    				.add(Projections.property("title"))
                                    .add // etc);
                    return criteria.list();
                }
            };

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut
    Bien vu fr1man, merci de vos réponses.

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

Discussions similaires

  1. Mysql Inner join
    Par ..:: Atchoum ::.. dans le forum Requêtes
    Réponses: 3
    Dernier message: 25/10/2007, 12h21
  2. [Hibernate] Inner join dans hibernate
    Par Saloucious dans le forum Hibernate
    Réponses: 3
    Dernier message: 24/08/2005, 09h38
  3. [ requeste sql ]INNER JOIN / OUTER JOIN
    Par hocinema dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/04/2004, 21h28
  4. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09
  5. Inner Join & Select
    Par bakaneko dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/02/2004, 10h48

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