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 :

Pb Mapping Liste d'objets


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut Pb Mapping Liste d'objets
    Bonjour,
    J'ai un objet s'appelant dossierMedical:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class DossierMedical {
     
    	private int identifiant;
     
    	private Collection actesMedicaux;
     
    	private Entreprise CPAM;
    }
    Voici mon mapping:
    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
    <hibernate-mapping>
        <class name="fr.sopragroup.callcenter.medical.DossierMedical" table="cc_dossier_medical">
            <id name="identifiant" type="int">
                <column name="id_dossier_medical" />
                <generator class="native" />
            </id>
            <many-to-one name="CPAM" class="fr.sopragroup.callcenter.common.Entreprise" fetch="select">
                <column name="cpam" />
            </many-to-one>
            <set name="actesMedicaux" inverse="true">
                <key>
                    <column name="id_dossier_medical" />
                </key>
                <one-to-many class="fr.sopragroup.callcenter.medical.ActeMedical" />
            </set>
        </class>
    </hibernate-mapping>

    Un dossier Medical est une liste/collection d'acte médicaux. Mon problème est lié à la création d'un dossier médical. En effet, lors de la création d'un dossier Médical, je n'ai pas encore affecté un ou plusieurs acte(s) médical(aux).

    Il me dit qu'il s'agit d'un problème de ClassCastException, mais je ne vois pas pourquuoi, voici l'erreur:
    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
    29
    30
    31
    32
    33
    34
    35
    11:09:14,081 ERROR DossierMedicalDAO:59 - attach failed
    java.lang.ClassCastException: java.util.ArrayList
    	at org.hibernate.type.SetType.wrap(SetType.java:39)
    	at org.hibernate.event.def.WrapVisitor.processArrayOrNewCollection(WrapVisitor.java:83)
    	at org.hibernate.event.def.WrapVisitor.processCollection(WrapVisitor.java:50)
    	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:104)
    	at org.hibernate.event.def.WrapVisitor.processValue(WrapVisitor.java:97)
    	at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:58)
    	at org.hibernate.event.def.AbstractSaveEventListener.visitCollectionsBeforeSave(AbstractSaveEventListener.java:281)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:222)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:160)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:95)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:481)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:476)
    	at fr.sopragroup.callcenter.medical.DAO.DossierMedicalDAO.save(DossierMedicalDAO.java:54)
    	at fr.sopragroup.callcenter.hibernate.test.testHibernate.main(testHibernate.java:128)
     
    	at org.hibernate.event.def.AbstractSaveEventListener.visitCollectionsBeforeSave(AbstractSaveEventListener.java:281)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:222)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:160)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:95)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:481)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:476)
    	at fr.sopragroup.callcenter.medical.DAO.DossierMedicalDAO.save(DossierMedicalDAO.java:54)
    	at fr.sopragroup.callcenter.hibernate.test.testHibernate.main(testHibernate.java:128)
    Merci d'avance,
    Yoko

  2. #2
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Regarde si ton objet qui recoit la requête (donc l'attribut actesMedicaux de DossierMedical) est bien un objet héritant de Set. Si j'interprête bien l'erreur, tu as utilisé une ArrayList qui n'implémente pas Set... il faudrait que tu définisse l'attribut de type Set (qui est une interface) ou plus généralement Collection (aussi une interface) si tu voudrais peut être changer plus tard le type du mapping et repasser en ArrayList . Une des implémentations du Set est la classe HashSet.

    L'avantage du Set est qu'il ne permet pas les redondances d'objets dans la collection il me semble. (Menfin, aps tout a fait sûr en fait). D'un point de vue utilisation, il ne change pas vraiment d'ArrayList ... qui reste une type de collection très basique

    EDIT : en fait tu l'as déjà déclaré en Collection cet attribut. Par contre son implémentation lorsque tu as construit la liste est une ArrayList qui n'hérite pas de Set ... utilise donc plutôt la HashSet comme je te l'ai écrit plus haut (ou bien change la avec un new HashSet(maArrayList), ca passe aussi)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut
    Si j'utilise bag à la place de set? ça peut régler le problème?
    Merci,

  4. #4
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Oui, pas de souci de ce coté la. Il évite ainsi l'index qui pose quelque problème dans le mapping hibernate. Tu pourras donc ainsi utiliser à ta guise l'ArrayList.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Par défaut
    Merci beaucoup BizuR,
    ça marche dans les 2 cas!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Spring Webflow] Mapping sur une liste d'objet
    Par quilovni dans le forum Spring Web
    Réponses: 1
    Dernier message: 30/05/2008, 15h38
  2. Tri d'une liste d'objet CObList
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 13/07/2005, 13h50
  3. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11
  4. [Kylix] Composant - Liste d'objet
    Par Metal3d dans le forum EDI
    Réponses: 1
    Dernier message: 13/12/2002, 22h17
  5. liste d'objets
    Par Pierrot dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2002, 09h56

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