Bonjour,
je travaille sur le mapping d'une DB déjà existante en rapport avec l'immobilier.
J'ai un modèle de ce type:
Table Obj <-- données communes au différents types de biens immobiliers
Table App, Mai, Lcom, Terr, Imm <-- différentes tables représentant les données d'un appartement, d'une maison, d'un immeuble etc...
J'ai utilisé un mapping de ce type :
Code:
<class
name="model.Obj"
table="t_obj"
>
<id name="idObj" type="java.lang.Integer">
<column name="id_obj" length="10" not-null="true" sql-type="int" />
</id>
<properties ...
...
</class>
et pour chaque table fille :
Code:
<joined-subclass name="model.App" extends="model.Obj" table="t_app">
<key column="id_obj"/>
<properties...
...
</joined-subclass>
Mon prblème est celui-ci : Historiquement (me demandez pas pourquoi) un champ commun etaObj à été créé non pas dans la table Mêre, mais dans chaqune des tables filles.
Mais si je test ce query :
Code:
from Obj as o where o.idObj < 10 and o.etaObj = 1013001
plutôt que d'obtenir tous les objets quelque soit leur type je n'obtiends que les appartements parce que le sql généré remplace o.etaObj par obj_0_1.etaObj
obj_0_1 étant l'alias sur l'outer join avec la table App.
En gros hibernante ne va pas faire un 'or' avec chaque table fille.
Avez-vous une idée pour résoudre mon problème ? Est-ce-que l'on peut, par exemple, remonter ce champ etaObj au niveau de la classe Obj tout en le laissant physiquement dans les table filles. Ou y-a-t-il un moyen de faire comprendre à hibernante que chaque table fille possède le même champ (par une interface ou autre chose) ?
J'ai pas mal cherché dans la doc, mais vu que c'est un problème du à un défaut d'architecture de la db, je ne trouve pas de réponse.
Merci d'avance pour votre coup de main.
Dun