Hibernate : insertion d'objet fils en "Loadant" l'objet parent
bonjour tout le monde, j'espère que ce mail trouveras son echo;
j'ai une classe "Dossier"
classe "DossierIncomplet" qui l'extend;
pour le mapping j'ai utilisé deux tables (mère et fille)
j'ai mappé l'héritage en utilisant "Joined-subclass" au sein du fichier Dossier.hbm.xml.
quand j'insère des objets pères dans la base de données, ça se passe très bien, mais quand je fais un loading sur un Dossier pour l'insérer en tant que DossierIncomplet, il me sort une exception comme deux objets différents avec un même id....
please aidez moi !
Merci d'avance
insertion d'objet fils en faisant un loading de l'objet père
Citation:
Envoyé par
JoloKossovar
fais voir tes fichiers de mapping pour commencer ;)
Voici le fichier Dossier.hbm.xml:
<?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="ma.rami.hibernate.model">
<class name="Dossier" table="DPI_DB.dbo.Dossier" polymorphism="implicit" >
<id name="numeroDossier" column="numeroDossier" >
<generator class="increment" />
</id>
<property name="libelleDossier" column="libelleDossier" />
<property name="dateReception" column="dateReception" />
<many-to-one name="typeDossier" column="idTypeDossier" not-null="true" class="TypeDossier" />
<many-to-one name="conseiller" column="idConseiller" not-null="true" class="Conseiller" />
<many-to-one name="affilie" column="idAffilie" not-null="true" class="Affilie" />
<joined-subclass name="DossierIncomplet" table="DPI_DB.dbo.DossierIncomplet" >
<key column="numeroDossier" />
</joined-subclass>
</class>
</hibernate-mapping>
NB:
en générant la base de données (avec power AMC9.5) la table DossierIncomplet est constituée uniquement de la colonne numeroDossier hérité de sa classe mère (i-e la classe Dossier)
insertion en différé d'objet fils
Citation:
Envoyé par
JoloKossovar
Je pense que c'est normal puisque tu lui specifie que la key column est la colum id de ta classe Dossier.
Code:
1 2 3
|
<joined-subclass name="DossierIncomplet" table="DPI_DB.dbo.DossierIncomplet" >
</joined-subclass> |
sans key column est bien suffisant. Et si tu as des champs present dans DossierIncomplet non present dans dossier tu les ajoute comme property de ta joined-subclass.
Merci beaucoup de m'avoir répondu;
cependant quand j'enlève l'attribut key il me donne erreur de lecture de Dossier.hbm.xml
autre chose très importante, (en laissant tout avec l'attribut key),
ce fraguement de code insère un nouveau enregistrement dans Dossier et non pas avec le même loading id (5) et en même temps le numeroDossier est insérer dans la table Dossier Incomplet:
code:
Session session=HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
DossierIncomplet idossier = new DossierIncomplet();
Dossier dos = (Dossier) session.load(Dossier.class,5) //5 est l'identifiant de l'objet à loader
idossier.set.....(dos.getpropriété)
.....
Merci beacoup.
session.save(idossier) ;