Bonjour,
je suis en train de mapper un graphe d'objet avec Hibernate et j'emploie à un moment des interfaces. Voici mon problème :
J'ai une classe Page qui contient un HasSet d'interface "ElementPage". C'est une relation one-to-many :
J'ai trois classes "Champ", "Bloc" et "Texte" qui implementent l'interface "ElementPage" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Page { ...... private Set<ElementPage> elementPages = new ....() } interface ElementPage {....}
Mon fichier de mapping pour la classe "Page" est le suivant :
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 class Champ implements ElementPage { ....... private Page page; } class Bloc implements ElementPage { ....... private Page page; } class Texte implements ElementPage { ....... private Page page; }
Mon fichier de mapping pour la classe "Champ" est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <hibernate-mapping ....> <class name="Page" table="t_page" > .............. <set name="elementPages" inverse="true"> <key column="PAGE_ID" /> <one-to-many class="ElementPage" /> </set> </class> </hibernate-mapping>
Mon fichier de mapping pour la classe "Bloc" est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <hibernate-mapping ....> <class name="Champ" table="t_champ" > .............. <many-to-one column="PAGE_ID" name="page" class="Page" /> </class> </hibernate-mapping>
Mon fichier de mapping pour la classe "Texte" est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <hibernate-mapping ....> <class name="Bloc" table="t_bloc" > .............. <many-to-one column="PAGE_ID" name="page" class="Page" /> </class> </hibernate-mapping>
En résumé, j'ai une classe "Page" qui a une association (un set) vers plusieurs "ElementPage" qui est elle même une interface implémentée par 3 autres classes. J'ai décidé de mapper ces 3 classes filles et non l'interface même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <hibernate-mapping ....> <class name="Texte" table="t_texte" > .............. <many-to-one column="PAGE_ID" name="page" class="Page" /> </class> </hibernate-mapping>
Le framework sur lequel je développe m'indique l'erreur suivante :
Il semble que j'ai créé une association vers une interface qui n'est pas mappé et que Hibernate ne gère pas cela. Je ne sais pas comment m'en sortir. Si il y a un génie d'hibernate qui peut me venir en aide, il est le bienvenu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Association references unmapped class: ElementPage
Merci d'avance pour vos réponses.
Xavier
Partager