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:
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 :mouarf:
Bon alors ce que j'ai fait pour ne pas rester les bras croisés:
J'ai crée une vue ETAT_ACAV:
Code:
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:
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> |