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 :

Mapping hibernate hbm


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut Problème Mapping hibernate entre plusieurs tables
    Bonjour,

    Je débute sous Hibernate et je n'arrive pas à faire un truc, ni à savoir si c'est possible.

    Je cherche a afficher un tableau dont le contenu provient des données de différentes tables et non pas d'une table unique.

    Le souci est que je ne sais pas trop comment créer le fichier de mapping étant donné que l'ID devrait provenir de champs identique sur 3 tables différentes donc ce ne peut être un Id autogénéré et les données proviennent de différentes tables. Pour moi hibernate, c'est le mapping d'une table à une classe or je n'ai pas de table spécifique. Donc je pensais passer par des many-to-one afin de récupérer ces données. Je ne sais pas si je pars dans le bon sens de ce que j'essaie de faire.



    Pour le moment ça donnerait ça ce que j'ai fait :

    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
     
    <?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 package="INTetatACAV.etatACAV.metier.entite">
    	<class name="MIFetatACAV">
    	  <id name="id_support" column="ID_ASUPPORT">
                <generator class="increment"/>
          </id>
          <many-to-one name="idsupport" column="ID_SUPPORT" 
    		class="ACAV_ACTIF" not-null="false"></many-to-one> 
          <many-to-one name="idsupport" column="ID_SUPPORT" 
    		class="ACAV_PASSIF" not-null="false"></many-to-one> 
          <many-to-one name="idsupport" column="ID_SUPPORT" 
    		class="ACAV_ATTENTE" not-null="false"></many-to-one> 
     
          <many-to-one name="valeur" column="VALEUR" 
    		class="VL" not-null="false"></many-to-one> 
     
          <many-to-one name="libellesupportcourt" column="LIBELLE_SUPPORT_COURT" 
    		class="SUPPORT" not-null="false"></many-to-one> 
     
          <many-to-one name="montantacava" column="MONTANT_ACAV_A" 
    		class="ACAV_ACTIF" not-null="false"></many-to-one> 
     
          <many-to-one name="montantacavp" column="MONTANT_ACAV_P" 
    		class="ACAV_PASSIF" not-null="false"></many-to-one> 
     
          <many-to-one name="montantacavattente" column="MONTANT_ACAV_ATTENTE" 
    		class="ACAV_ATTENTE" not-null="false"></many-to-one> 		
     
          <many-to-one name="idacavattente" column="ID_ACAV_ATTENTE" 
    		class="FLUX_ACAV" not-null="false"></many-to-one> 
     
          <many-to-one name="idflux" column="ID_FLUX" 
    		class="FLUX_ACAV" not-null="false"></many-to-one> 							      
    	</class>
    </hibernate-mapping>
    Merci à ceux qui pourront m'apporter une lumière à mon problème

    Bon alors ce que j'ai fait pour ne pas rester les bras croisés:

    J'ai crée une vue ETAT_ACAV:
    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
     
    CREATE OR REPLACE VIEW ETAT_ACAV
    (ID_SUPPORT, VALEUR, LIBELLE_COURT, MONTANT_ACAV_A, MONTANT_ACAV_P, 
     MONTANT_ACAV_ATTENTE, ID_ACAV_ATTENTE, ID_FLUX)
    AS 
    SELECT AA.ID_SUPPORT ,
                        VALEUR ,
                        LIBELLE_COURT ,
                        AA.MONTANT_ACAV_A , 
                        MONTANT_ACAV_P ,
                        MONTANT_ACAV_ATTENTE , 
                        FA.ID_ACAV_ATTENTE , 
                        FA.ID_FLUX
                        FROM
                        VL ,
                        MIF_SUPPORT ,
                        ACAV_ACTIF AA ,
                        ACAV_PASSIF ,
                        ACAV_ATTENTE ,
                        FLUX_ACAV FA
    /
    C'est une requête simple qui me retourne les champs dont j'ai besoin à partir de différentes tables.

    Mais je rencontre quelques points d'interrogation à savoir. Dans un fichier mapping. Dans le cas d'une vue, que doit on mettre à la place de l'ID
    et toujours ma question, comment écrire la syntaxe dans le cas d'un ID (ID_SUPPORT) présent dans plusieurs tables (3 tables: acav_actif, acav_passif, acav_attente)

    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
     
    <?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 package="INTetatACAV.etatACAV.metier.entite">
       <!--  Couche Hibernate des derniers etats en faisant appel à la vue -->
    	<class name="MIFetatACAV" table="ETAT_ACAV">
    	  <id name="id_acav" column="SEQ_ID_ACAV">
     <!--            <generator class="increment"/> -->
                <generator class="native"/>            
          </id>
          <many-to-one name="idsupport" column="ID_SUPPORT" class="INTetatACAV.etatACAV.metier.entite.acav_actif" not-null="false" />      
          <many-to-one name="idsupport" column="ID_SUPPORT" class="INTetatACAV.etatACAV.metier.entite.acav_passif" not-null="false" />    
          <many-to-one name="idsupport" column="ID_SUPPORT" class="INTetatACAV.etatACAV.metier.entite.acav_attente" not-null="false" />    
           <many-to-one name="valeur" column="VALEUR" class="INTetatACAV.etatACAV.metier.entite.vl"></many-to-one>     
          <many-to-one name="libellesupportcourt" column="LIBELLE_SUPPORT_COURT" class="INTetatACAV.etatACAV.metier.entite.support"></many-to-one>     
          <many-to-one name="montantacava" column="MONTANT_ACAV_A" class="INTetatACAV.etatACAV.metier.entite.acav_actif"></many-to-one>   
          <many-to-one name="montantacavp" column="MONTANT_ACAV_P" class="INTetatACAV.etatACAV.metier.entite.acav_passif"></many-to-one>   
         <many-to-one name="montantacavattente" column="MONTANT_ACAV_ATTENTE" class="INTetatACAV.etatACAV.metier.entite.acav_attente"></many-to-one>   
         <many-to-one name="idacavattente" column="ID_ACAV_ATTENTE" class="INTetatACAV.etatACAV.metier.entite.flux_acav"></many-to-one>      
         <many-to-one name="idflux" column="ID_FLUX" class="INTetatACAV.etatACAV.metier.entite.flux_acav"></many-to-one>                                 
     
    	</class>
    </hibernate-mapping>

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Résolu en créant une vue, en créant une composite-id des 3 champs et en mettant property pour déclarer les colonnes de ma vue.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2010, 23h23
  2. Réponses: 7
    Dernier message: 07/12/2009, 22h49
  3. Réponses: 4
    Dernier message: 04/03/2009, 13h45
  4. mapping Hibernate + fichier.hbm.xml
    Par skillipo dans le forum Hibernate
    Réponses: 1
    Dernier message: 01/02/2008, 11h57
  5. mapping hibernate
    Par enimiste dans le forum Hibernate
    Réponses: 11
    Dernier message: 16/05/2006, 11h20

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