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 :
1 2 3 4 5 6 7 8
|
class Page
{
......
private HashSet<ElementPage> elementPages = new ....()
}
interface ElementPage {....} |
J'ai trois classes "Champ", "Bloc" et "Texte" qui implementent l'interface "ElementPage" :
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 "Page" est le suivant :
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 "Champ" est le suivant :
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 "Bloc" est le suivant :
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> |
Mon fichier de mapping pour la classe "Texte" est le suivant :
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> |
Mon problème est de savoir si cette configuration va passer, si le fait de déclarer un HashSet d'interface avec cette interface pouvant être implémentée par trois classes différentes qui vont être mappées à trois tables respectivement va passer, si au niveau du fichier de mapping tout se passe comme si j'avais des relations entre classes directement, plutôt que passer par l'intermédiaire d'interface.
Merci d'avance pour vos réponses.
Xavier
Partager