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 :

Sauvegarder Objet avec attribut HashMap


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut Sauvegarder Objet avec attribut HashMap
    Salut !

    Je dispose dans mon application d'un objet POJO avec les attributs suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Message{
    private Map metadata;
    private String payload;
    ......
    }
    J'ai créé une table en base de données Postgresql contenant un champ de type bytea ( binaire ) pour le Map et un champ de type varchar pour le String .

    Voici mon fichier hbm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <hibernate-mapping>
    	<class name="org.beans.Message" table="message">
    		<id name="id" column="id">
    			<generator class="increment" />
    		</id>
    		<property name="metadata" column="metadata"/>
    		<property name="payload" column="payload" />
    	</class>
    </hibernate-mapping>
    en essayant de faire un session.save() de mon objet, j'obtiens l'erreur suivante :

    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
     
    Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Map, at table: message, for columns: [org.hibernate.mapping.Column(metadata)]
    	at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:290)
    	at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:274)
    	at org.hibernate.mapping.Property.isValid(Property.java:207)
    	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464)
    	at org.hibernate.mapping.RootClass.validate(RootClass.java:236)
    	at org.hibernate.cfg.Configuration.validate(Configuration.java:1193)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1378)
    	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:855)
    	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:774)
    	at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
    	... 52 more
    Si je supprime la ligne relative à l'attribut metadata du fichier hbm tout marche parfaitement.

    Merci d'avance à tous ceux qui me fourniront un élément de réponse.

  2. #2
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Je me rends compte que ma demande n'est pas tout à fait claire :

    En fait, je voudrais savoir comment sauvegarder un objet ayant un attribut de type complexe comme "Map" en utilisant hibernate.

  3. #3
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    En fait, il suffit d'ajouter le type à la propriété metadata dans le fichier hbm.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="metadata" column="metadata" type="serializable"/>
    le type serializable correspond à une propriété de type objet Java.

    Voici la liste des correspondances de type Java VS Hibernate

    http://www.java2s.com/Code/Java/Hibe...ernateType.htm

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

Discussions similaires

  1. [EJB Stateless] EJB Distant reçoit Objet avec Attributs à "null"
    Par VincentG.Me dans le forum Java EE
    Réponses: 2
    Dernier message: 11/11/2011, 19h11
  2. Réponses: 5
    Dernier message: 12/01/2011, 21h15
  3. Réponses: 10
    Dernier message: 22/09/2008, 10h23
  4. Copie d'un objet avec un attribut de type vector
    Par yassine480480 dans le forum C++
    Réponses: 7
    Dernier message: 02/08/2008, 09h53
  5. stockage objet session avec attribut private : KO
    Par kaboume dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 11h32

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