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 :
Merci à ceux qui pourront m'apporter une lumière à mon problème
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>
Bon alors ce que j'ai fait pour ne pas rester les bras croisés:
J'ai crée une vue ETAT_ACAV:
C'est une requête simple qui me retourne les champs dont j'ai besoin à partir de différentes tables.
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 /
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>
Partager