IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Hibernate : insertion d'objet fils en "Loadant" l'objet parent


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut 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

  2. #2
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    fais voir tes fichiers de mapping pour commencer

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut insertion d'objet fils en faisant un loading de l'objet père
    Citation Envoyé par JoloKossovar Voir le message
    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)

  4. #4
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Je pense que c'est normal puisque tu lui specifie que la key column est la colum id de ta classe Dossier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut insertion en différé d'objet fils
    Citation Envoyé par JoloKossovar Voir le message
    Je pense que c'est normal puisque tu lui specifie que la key column est la colum id de ta classe Dossier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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) ;

  6. #6
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Tu ne dois ^pas loader les objets avec l identifiant hibernate. L'identifiant hibernate n'est QUE pour hibernate. Tu load tes dossier avec les parametres appropriés (avec libellé dossier par exemple...).

    Et autant pour moi, ce que je t'ai donné est valable pour une union-subclass et pas joined-class.

Discussions similaires

  1. [OJB] probleme d'insertion de l'id de l'objet fils en base
    Par rherrad dans le forum Persistance des données
    Réponses: 3
    Dernier message: 19/07/2007, 16h48
  2. [MySQL] Problème insertion lors de la présence de double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2007, 19h23
  3. Réponses: 1
    Dernier message: 27/07/2005, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo