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

Struts 1 Java Discussion :

Identifier classes must be serializable


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Par défaut Identifier classes must be serializable
    Bonjour,
    j'ai pas bien compris ce que c'est cette 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
    36
    37
    38
    39
    40
     
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
     
    exception 
     
    javax.servlet.ServletException: Identifier classes must be serializable. com.school.model.PossedeTuteur is not serializable. com.school.model.PossedeTuteur
    	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
     
    cause mère 
     
    java.lang.ClassCastException: Identifier classes must be serializable. com.school.model.PossedeTuteur is not serializable. com.school.model.PossedeTuteur
    	org.hibernate.tuple.AbstractTuplizer.getIdentifier(AbstractTuplizer.java:117)
    	org.hibernate.persister.entity.BasicEntityPersister.getIdentifier(BasicEntityPersister.java:2944)
    	org.hibernate.id.Assigned.generate(Assigned.java:31)
    	org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:85)
    	org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
    	org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
    	org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
    	org.hibernate.impl.SessionImpl.save(SessionImpl.java:481)
    	org.hibernate.impl.SessionImpl.save(SessionImpl.java:476)
    	com.school.service.PossedTuteurService.AjouterTypeTuteur(PossedTuteurService.java:13)
    	com.school.action.EleveAjoutAction.execute(EleveAjoutAction.java:124)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
     
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    la classe PossedeTuteur c'est une de tes classes?
    Si oui, tu pourrais mettre le code stp?

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Par défaut
    voici ma classe PossedeTuteur.
    le mapping de cette classe se compose d'un composite id ,qui vient de la classe Tuteur et Eleve.
    Au dessus il y a la classe PossedeTuteur et son 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
    18
    19
    20
    21
     
    <?xml version="1.0" encoding='UTF-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
       <hibernate-mapping package="com.school.model">  
       <class name="PossedeTuteur" table="POSSEDE">
    		<composite-id>
    	 		<key-many-to-one name="eleve" column="CODE_ELEVE"
    					class="Eleve"/>
    	 		<key-many-to-one name="tuteur" column="CIN_TUTEUR"
    					class="Tuteur"/>
     
    	 	</composite-id>
     
    	 <property name="TYPE_TUTEUR" column="TYPE_TUTEUR" type="java.lang.String"/>	
     
     
    	 </class>
    	 </hibernate-mapping>
    la classe PossedeTuteur :

    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
     
    package com.school.model;
    import java.util.*;
    public class PossedeTuteur {
     
     
     
    	   private String TYPE_TUTEUR;
    	   private Eleve eleve;
    	   private Tuteur tuteur;
     
    	public Eleve getEleve() {
    		return eleve;
    	}
    	public void setEleve(Eleve eleve) {
    		this.eleve = eleve;
    	}
    	public Tuteur getTuteur() {
    		return tuteur;
    	}
    	public void setTuteur(Tuteur tuteur) {
    		this.tuteur = tuteur;
    	}
    	public String getTYPE_TUTEUR() {
    		return TYPE_TUTEUR;
    	}
    	public void setTYPE_TUTEUR(String type_tuteur) {
    		TYPE_TUTEUR = type_tuteur;
    	}
     
     
     
    }

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    heu là c'est un pb d'hibernate je pense...précise le dans l'intitulé de ton post ca facilitera pour les gens susceptible de t'aider...

    les classe tuteur et eleve sont bien dans le package "com.school.model"?
    Tu es sur qu'il ne faut pas mettre un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <key-many-to-one name="eleve" column="CODE_ELEVE"
    					class="lepackage.Eleve"/>
    	 		<key-many-to-one name="tuteur" column="CIN_TUTEUR"
    					class="lepackage.Tuteur"/>
    ??

    Perso je n'ai jamais encore utilisé le framework hibernate.... J'étais censée le faire sur le projet qu'on est en train de développer mais pour un petit projet comme celui sur lequel je suis ca ferait plus perdre du temps qu'en gagner... et là on est en plus carrément à la bourre => on a laché l'idée d'utiliser hibernate

    En tout cas dsl de ne pas pouvoir t'aider bcp plus.... Vas jeter un oeil ici,
    ou encore ici, ou ici.

    Bon courage, en espérant t'avoir un petit peu aidé....

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Essaye de declarer tes classes serializable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Tuteur extends Serializable
    idem pour la classe Eleve

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Un conseil d'ordre général, qui pourrait contribuer à la résolution de ton problème (bien que la solution de max est probablement suffisante).
    Quand tu utilises Hibernate (ou pas d'ailleurs), il est déconseillé de ne pas utiliser de champ clé primaire (un champ ID quoi !) sur une table de relation quand elle comporte des données complémentaires sur la relation. C'est en tout cas ce que disent les recommandations d'Hibernate, et il est vrai qu'en pratique c'est plus... pratique.

    Je te conseille donc de laisser tomber ta clé composite pour une clé sur un champ ID unique, tu éviteras beaucoup de pièges (si tu veux à tout prix coder l'unicité de tes couples tuteur/eleve, tu as les "natural-id" d'hibernate pour ca).

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par maxf1
    Essaye de declarer tes classes serializable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Tuteur extends Serializable
    idem pour la classe Eleve
    Ce n'est pas extends mais implements car c'est une interface.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Tuteur implements Serializable

  8. #8
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Citation Envoyé par c_nvy
    Ce n'est pas extends mais implements car c'est une interface.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Tuteur implements Serializable


    Mais ou avais-je ma tête ce jour la......
    Heureusement des autres personnes en avait une pour me corriger

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/07/2011, 13h58
  2. Marquer une classe comme "non serializable"
    Par paranoia dans le forum Général Java
    Réponses: 8
    Dernier message: 13/01/2011, 11h11
  3. Réponses: 2
    Dernier message: 02/12/2010, 15h22
  4. Booleen identifiant classe d'asso
    Par totoche dans le forum Schéma
    Réponses: 1
    Dernier message: 11/06/2007, 16h49
  5. Réponses: 4
    Dernier message: 09/02/2007, 14h19

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