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] problème de sauvegarde


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Points : 42
    Points
    42
    Par défaut [Hibernate] problème de sauvegarde
    bonjour,

    j'ai actuellement un problème de sauvegarde de données du a hibernate, j'explique le pourquoi :

    mon système récupère plusieurs objets dans la base, par exmple:

    case
    person

    pour ces objets j'ai créé un case.hbm.xml et un person.hbm.xml qui indique quel attribut doivent être récupéré dans la base sur les table T_CASE et T_PERSON (respectivement).

    jusqu'a présent tout fonctionne bien, j'arrive a faire toute les opérations (sauvegarde et récupération de données).

    maintenant je veux ajouter un objet summaryCase qui est un sous ensemble de l'objet case.
    ci joint une partie des deux fichiers case et summarycase.hbm.xml pour mieux comprendre:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
       <class name="TCase" table="T_CASE">
            <id name="id" column="ID" type="java.lang.Integer">
              <generator class="sequence">
                    <param name="sequence">seq_case</param>
              </generator>
            </id>
     
           <property name="cseTechnicalState" column="CSE_TECHNICAL_STATE" type="java.lang.String" />
            <property name="cseRefNb" column="CSE_REF_NB" type="java.lang.String" />
            <property name="cseAfisMsgRef" column="CSE_AFIS_MSG_REF" type="java.lang.String" />
            <property name="cseAfisModRef" column="CSE_AFIS_MOD_REF" type="java.lang.String" />
            <property name="cseType" column="CSE_TYPE" type="java.lang.String" />
            <property name="cseDomain" column="CSE_DOMAIN" type="java.lang.String" />
            <property name="cseOpenedOn" column="CSE_OPENED_ON" type="java.util.Date" />
            <property name="cseMemo" column="CSE_MEMO" type="java.lang.String" />
            <property name="cseStatus" column="CSE_STATUS" type="java.lang.String" />
            <property name="csePeriodFrom" column="CSE_PERIOD_FROM" type="java.util.Date" />
            <property name="csePeriodTo" column="CSE_PERIOD_TO" type="java.util.Date" />
            <property name="cseTransCen" column="CSE_TRANS_CEN" type="java.lang.String" />
            <property name="cseCommLang" column="CSE_COMM_LANG" type="java.lang.String" />
            <property name="cseInvestigFldCode" column="CSE_INVESTIG_FLD_CODE" type="java.lang.String" />
            <property name="cseInvestigSubmDate" column="CSE_INVESTIG_SUBM_DATE" type="java.util.Date" />
            <property name="cseInvestigStartDate" column="CSE_INVESTIG_START_DATE" type="java.util.Date" />
            <property name="creUsr" column="CSE_CRE_USR" type="java.lang.String" not-null="true" />
            <property name="creDate" column="CSE_CRE_DATE" type="java.util.Date"  not-null="true" />
            <property name="modUsr" column="CSE_MOD_USR" type="java.lang.String"  not-null="true" />
            <property name="modDate" column="CSE_MOD_DATE" type="java.util.Date"  not-null="true" />
    et pour le summarycase
    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
    17
    18
    19
    20
    21
     
       <class name="TSummaryCase" table="T_CASE">
            <id name="id" column="ID" type="java.lang.Integer">
              <generator class="sequence">
                    <param name="sequence">seq_summary_case</param>
              </generator>
            </id>
     
            <property name="cseRefNb" column="CSE_REF_NB" type="java.lang.String" />
            <property name="cseType" column="CSE_TYPE" type="java.lang.String" />
            <property name="cseDomain" column="CSE_DOMAIN" type="java.lang.String" />
            <property name="cseOpenedOn" column="CSE_OPENED_ON" type="java.util.Date" />
            <property name="cseStatus" column="CSE_STATUS" type="java.lang.String" />
            <property name="cseCommLang" column="CSE_COMM_LANG" type="java.lang.String" />
            <property name="creUsr" column="CSE_CRE_USR" type="java.lang.String" not-null="true" />
            <property name="creDate" column="CSE_CRE_DATE" type="java.util.Date"  not-null="true" />
            <property name="modUsr" column="CSE_MOD_USR" type="java.lang.String"  not-null="true" />
            <property name="modDate" column="CSE_MOD_DATE" type="java.util.Date"  not-null="true" />
     
         </class>                                
    </hibernate-mapping>
    je n'ai pas besoin en effet de récuperer un case complet dans certain cas mais juste un summarycase.

    après quelques test j'arrive a récupérer ce que je veux (case et summarycase)
    mais lorsque je tente de sauver un case (et juste le case car je n'utilise pas de summarycase lors de la création) le système me jette une erreur du style
    multiple classes map to one table T_CASE
    ma question :
    existe t'il un moyen d'empécher hibernate de voir summarycase comme un objet a sauvegarder ? car la il essaye de sauvegarder un attribut de case et vois deux référence d'ou l'erreur.

    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    il existe dans Hibernate 3 une technologie qui répond à ton problème

    http://www.hibernate.org/41.html

    Par contre il te faut modifier ton mapping pour que TCase hérite de TSummaryCase.

    NB : un même objet (même identifiant unique) ne peut être en session sous deux classes différentes.


    Cela dit il existe d'autres solutions
    ne pas déclarer la classe TSummaryCase dans ton fichier de mapping Hibernate (l'alimentation de TSummaryCase se fait à la "main")

    utiliser ta classe TCase mais sans valoriser tous les attributs (par exemple si tu affiche une liste d'objets partiels, l'utilisateur en choisi un pour le modifier et à ce moment tu charge l'objet complet)

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Points : 42
    Points
    42
    Par défaut
    merci de tes réponses :-)

    la 2eme/3eme je compte l'appliquer en dernier recours.(car c'est un peu les même solutions)

    je vais investiguer pour la première.

    par contre c'est très étrange car une application a déja été réalisé de cette manière et cela fonctionne(la seule différence provient du fait que le mapping des deux objets et icnlus dans le même fichier hbm.xml)

Discussions similaires

  1. [Hibernate] Problème sauvegarde
    Par libery dans le forum Hibernate
    Réponses: 12
    Dernier message: 14/01/2010, 16h42
  2. [PDE] Problème pour sauvegarder une modif dans un éditeur
    Par simsky dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 11/08/2005, 15h05
  3. Problème de sauvegarde des locales
    Par PANAYE Nicolas dans le forum XMLRAD
    Réponses: 1
    Dernier message: 04/08/2005, 09h51
  4. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  5. [plugin hibernate] problème d'installation
    Par slymira dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/06/2005, 13h06

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