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 :

java.lang.ClassCastException sur un save()


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Par défaut java.lang.ClassCastException sur un save()
    Bonjour à tous !

    J'ai un souci avec un objet qui ne veut pas s'enregistrer dans ma base de donnée. J'ai ce message dans les logs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INFO IntegerType:158 - could not bind value '0' to parameter: 1; java.lang.Long cannot be cast to java.lang.Integer
    Et cette exception est levée ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
    J'enregistrais pas mal de champs et d'associations avec cet objet et je me suis dis que ça venait de là, mais j'ai quasiment tout retiré de mon fichier de mapping (pour ne persister qu'un seul champ de type string) et le problème subsiste.
    J'ai lu quelque part que ça pouvait venir de l'ID dont le type était mal interprété mais sans solutions.
    C'est quand même étrange, ce n'est pas le premier fichier mapping que je fais et celui-ci me pose problème.

    Je vous le met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <class name="Societe">
      	<id name="id">
      		<generator class="native"></generator>
      	</id> 
     
      	<version name="version" generated="never" insert="true"></version>
     
      	<property name="nom" type="string"></property>	
      </class>
    Avouez qu'il y a quand même plus compliqué

    Et pour une raison qui m'est complètement inconnue il m'est impossible de stopper l'exécution du programme avec un breakpoint dans l'implémentation de mes ActionListener (sur mon bouton OK qui valide les saisies). Est-ce que ça peut être une histoire de threads avec l'EDT ?
    Pour le coup j'y comprend plus rien du tout

    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peux voir la classe?

  3. #3
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Par défaut
    Si tu veux, mais rien n'est persisté à part le nom (comme tu as pu le constater) :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
     
    public class Societe {
    	private long id;
    	private String nom;	//OK
    	private String adresse1; //OK
    	private String adresse2; //OK
    	private String adresse3; //OK
    	private String tel; //OK
    	private String fax; //OK
    	private String mail; //OK
    	private CodePostal cp; //OK
    	private Ville ville; //OK
    	private String pays;
    	private User commercial; //OK
    	private Secteur secteur; //OK
    	private Statut statut; //OK
    	private Recommanded recommanded; //OK
    	private Effectif effectif; //OK
    	private long porteurs; //OK
    	private Groupe groupe; //OK
    	private Categorie categorie; //OK
    	private long version;
    	private Solvabilite solvabilite; //OK
    	private User user;
    	private boolean siege;
     
    	public Societe() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
     
    	public long getId() {
    		return id;
    	}
     
    	private void setId(long id) {
    		this.id = id;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public boolean isSiege() {
    		return siege;
    	}
     
    	public void setSiege(boolean siege) {
    		this.siege = siege;
    	}
     
    	public User getUser() {
    		return user;
    	}
     
    	public void setUser(User user) {
    		this.user = user;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public String getAdresse1() {
    		return adresse1;
    	}
     
    	public long getVersion() {
    		return version;
    	}
     
    	public void setVersion(long version) {
    		this.version = version;
    	}
     
    	public void setAdresse1(String adresse) {
    		this.adresse1 = adresse;
    	}
     
    	public String getAdresse2() {
    		return adresse2;
    	}
     
    	public void setAdresse2(String adresse2) {
    		this.adresse2 = adresse2;
    	}
     
    	public String getAdresse3() {
    		return adresse3;
    	}
     
    	public void setAdresse3(String adresse3) {
    		this.adresse3 = adresse3;
    	}
     
    	public String getTel() {
    		return tel;
    	}
     
    	public void setTel(String tel) {
    		this.tel = tel;
    	}
     
    	public String getFax() {
    		return fax;
    	}
     
    	public void setFax(String fax) {
    		this.fax = fax;
    	}
     
    	public String getMail() {
    		return mail;
    	}
     
    	public void setMail(String mail) {
    		this.mail = mail;
    	}
     
     
     
    	public CodePostal getCp() {
    		return cp;
    	}
     
    	public void setCp(CodePostal cp) {
    		this.cp = cp;
    	}
     
    	public Ville getVille() {
    		return ville;
    	}
     
    	public void setVille(Ville ville) {
    		this.ville = ville;
    	}
     
    	public String getPays() {
    		return pays;
    	}
     
    	public void setPays(String pays) {
    		this.pays = pays;
    	}
     
     
     
    	public Solvabilite getSolvabilite() {
    		return solvabilite;
    	}
     
    	public void setSolvabilite(Solvabilite solvabilite) {
    		this.solvabilite = solvabilite;
    	}
     
    	public Categorie getCategorie() {
    		return categorie;
    	}
     
    	public void setCategorie(Categorie categorie) {
    		this.categorie = categorie;
    		categorie.getSocietes().add(this);
    	}
     
    	public User getCommercial() {
    		return commercial;
    	}
     
    	public void setCommercial(User commercial) {
    		this.commercial = commercial;
    	}
     
    	public Secteur getSecteur() {
    		return secteur;
    	}
     
    	public void setSecteur(Secteur secteur) {
    		this.secteur = secteur;
    	}
     
    	public Effectif getEffectif() {
    		return effectif;
    	}
     
    	public void setEffectif(Effectif effectif) {
    		this.effectif = effectif;
    	}
     
    	public long getPorteurs() {
    		return porteurs;
    	}
     
    	public void setPorteurs(long porteurs) {
    		this.porteurs = porteurs;
    	}
     
    	public Groupe getGroupe() {
    		return groupe;
    	}
     
    	public void setGroupe(Groupe groupe) {
    		this.groupe = groupe;
    	}
     
    	public Statut getStatut() {
    		return statut;
    	}
     
    	public void setStatut(Statut statut) {
    		this.statut = statut;
    	}
     
    	public Recommanded getRecommanded() {
    		return recommanded;
    	}
     
    	public void setRecommanded(Recommanded recommanded) {
    		this.recommanded = recommanded;
    	}	
     
    	@Override
    	public String toString() {
    		return nom+" - "+ville;
    	}
     
    	public static List<Societe> getSocietes(Session s) throws Exception{	
    		s.beginTransaction();
    		List<Societe> lst = s.createQuery("from Societe").list();
    		s.getTransaction().commit();
    		return lst;
    	}
    	public static List<Societe> getSocietes (Session s, Criterion... crits){
    		Criteria ca = s.createCriteria(Societe.class);
    		for (Criterion c : crits) {
    			ca.add(c);
    		}
    		ca.addOrder(Order.asc("nom"));
    		return ca.list();
    	}	
    	public static List<Societe> getSocietes (Session s, Order o, Criterion... crits){
    		Criteria ca = s.createCriteria(Societe.class);
    		for (Criterion c : crits) {
    			ca.add(c);
    		}
    		ca.addOrder(o);
    		return ca.list();
    	}
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et si tu remplace long par int dans ta classe. Il semble que ton mapping hibernante + ton "native" fasse qu'hibernante veux utiliser une colonne de type interger plutot que long d'ou le class cast exception. ou alors, dans l'autre sens mettre type="long" sur le mapping de l'id

  5. #5
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Par défaut
    Non ça ne change rien. Je m'étais posé la question également et je trouvais bizarre qu'Hibernate génère un schéma qui ne soit pas en adéquation avec ses fichiers de mapping.

    Dans le doute j'ai viré ma table et l'ai faite recréer, toujours ce problème.
    J'ai changé le type de l'ID mais toujours pareil....

    Je voulais vérifier les valeurs de l'instance avant qu'elle passe dans le save mais impossible de breaker dessus.....
    Tous les breakpoints posés avant l'affichage de ma boite de dialogue fonctionnent, mais après ça ne veut plus rien entendre...
    Est-ce qu'il y a des raisons qui peuvent faire qu'un programme ne va pas s'arrêter sur un point d'arrêt ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le fait qu'il y aie une condition sur le point d'arret ou plus simplement qu'il ne passe pas dessus.

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

Discussions similaires

  1. Exception java.lang.ClassCastException: java.lang.Long save
    Par *alexandre* dans le forum Hibernate
    Réponses: 3
    Dernier message: 07/02/2009, 10h05
  2. [XSLT] java.lang.ArrayIndexOutOfBoundsException sur Transformation XSLT
    Par SONY30 dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 11/12/2006, 16h59
  3. JSP javamail java.lang.ClassCastException
    Par itr dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 14/06/2006, 17h01
  4. [EJB3] java.lang.ClassCastException
    Par n00noors dans le forum Java EE
    Réponses: 9
    Dernier message: 21/02/2006, 15h06
  5. Réponses: 16
    Dernier message: 10/01/2006, 22h02

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